Matthew Chen
1bbd41f725
Improve perf of database snapshots.
2018-03-20 11:23:56 -04:00
Michael Kirk
a0bd2c2324
OrphanDataCleaner shouldn't delete active thumbnails
...
// FREEBIE
2018-03-19 14:22:03 -04:00
Michael Kirk
dfd628250d
Gallery performance
...
- [x] share uiDatabaseConnection to share cache
- [x] increase cache size
- [x] load less initially
- [x] lazy loading
- [x] slider view
- [x] tile view
// FREEBIE
2018-03-19 14:22:03 -04:00
Michael Kirk
4ac9a1019b
Media page view controller
...
First pass at a swipe-through media view for conversations.
Future work could include
- title label per item
- sender name
- date/time
- photo rail
- include caption
// FREEBIE
2018-03-16 15:55:34 -04:00
Matthew Chen
4746948dfe
Respond to CR.
2018-03-14 10:02:44 -03:00
Matthew Chen
3f822e8ce3
Complete minimal backup MVP.
2018-03-14 09:27:39 -03:00
Matthew Chen
0971bad4b2
Upload database and manifest files to CloudKit.
2018-03-12 16:40:07 -03:00
Matthew Chen
c84bf81cf3
Export database for backup.
2018-03-12 16:40:07 -03:00
Matthew Chen
46a89e89f0
Sketch out OWSBackupStorage.
2018-03-12 16:40:06 -03:00
Matthew Chen
792be8018f
Incremental backup.
2018-03-12 16:40:06 -03:00
Matthew Chen
692ef423be
Rename TSStorageManager to OWSPrimaryStorage.
2018-03-06 17:12:13 -03:00
Matthew Chen
d6f4db1523
Rename TSStorageManager to OWSPrimaryStorage.
2018-03-06 17:12:13 -03:00
Michael Kirk
1d3831eccd
Registration Lock reminder view
...
Also fixed: Don't lose PIN across registrations
// FREEBIE
2018-03-05 09:53:09 -05:00
Michael Kirk
54792ff461
Fix overzealous assert.
...
Sometimes we set values to nil - e.g. when re-registering through
debugUI
// FREEBIE
2018-03-05 09:37:26 -05:00
Matthew Chen
59c745756a
Clean up codebase.
2018-03-02 15:05:14 -05:00
Matthew Chen
e12a1e984a
Work on two-factor auth settings UI.
2018-03-01 15:38:59 -05:00
Matthew Chen
59f480d5c4
Use background tasks during storage registration and disappearing message jobs.
2018-02-27 08:42:30 -05:00
Matthew Chen
4e1e232825
Flush writes from other processes.
2018-02-22 11:46:08 -05:00
Matthew Chen
3bb802189c
Use background tasks during db transactions.
2018-02-21 16:10:55 -05:00
Matthew Chen
706006539f
Improve the robustness of the migration logic.
2018-02-20 20:16:12 -05:00
Matthew Chen
d91507d897
Improve the robustness of the migration logic.
2018-02-20 17:37:14 -05:00
Matthew Chen
9295a56309
Elaborate logging around storage migration.
2018-02-20 16:25:15 -05:00
Michael Kirk
033505afd7
Remove slow file protection updates from launch path
...
To avoid blocking launch, file protection is now updated async for most
moved files. Out of paranoia, the database files are also update
redundantly on a sync code path.
It's still critical that we update permissions recursively for two
reasons:
1. Updating a containing directories FileProtection does not affect
existing files in that directory.
2. Because we've changed the containers default file protection level
(from unspecified to NSFileProtectionComplete), some existing files
will have there file protection updated upon launching Signal 2.20.
It's not clear to me which files this affects, and I haven't found
any relevant documentation, but from observation, it seems to affect
any top-level files in the container. Regardless, we're now doing the
right thing: after launching 2.20, ensure all file permissions are
what we expect.
Also removed no-op file protection on legacy db files. They've already
been moved by the time this method runs in AppSetup.
// FREEBIE
2018-02-18 16:24:29 -05:00
Michael Kirk
3d5f7e6bf3
Clean up logging
...
- tag all log lines for easier filtering
- use up-to-date database path
// FREEBIE
2018-02-14 09:16:42 -08:00
Matthew Chen
ba42ac73d8
Revisit TODOs in the SAE work.
2018-02-12 22:33:26 -05:00
Matthew Chen
b64528e817
Respond to CR.
2018-02-09 10:42:25 -05:00
Matthew Chen
bd0f601792
Respond to CR.
2018-02-09 10:31:29 -05:00
Matthew Chen
38950ae2ed
Respond to CR.
2018-02-09 10:31:29 -05:00
Matthew Chen
6b357f9445
Respond to CR.
2018-02-09 10:31:29 -05:00
Matthew Chen
43765ef3b5
Respond to CR.
2018-02-09 10:31:29 -05:00
Matthew Chen
7d3f79440f
Clean up ahead of PR.
2018-02-09 10:31:29 -05:00
Matthew Chen
bbd689bfd0
Add protocol context to protocol kit.
2018-02-09 10:31:29 -05:00
Matthew Chen
074046b98e
Add protocol context to protocol kit.
2018-02-09 10:31:29 -05:00
Matthew Chen
7358f3053f
Add protocol context to protocol kit.
2018-02-09 10:31:29 -05:00
Matthew Chen
39e353503f
Add protocol context to protocol kit.
2018-02-09 10:31:29 -05:00
Matthew Chen
71782e0369
Add protocol context to protocol kit.
2018-02-09 10:31:29 -05:00
Matthew Chen
122ef91e57
Add protocol context to protocol kit.
2018-02-09 10:31:29 -05:00
Michael Kirk
4f8db63fb3
Ensure keyspec is generated before DB is created
...
// FREEBIE
2018-01-31 18:05:44 -08:00
Michael Kirk
6f959ff292
CR: be more conservative about deriving key spec, clear old passphrase
...
after deriving key spec.
// FREEBIE
2018-01-31 17:22:42 -08:00
Michael Kirk
d22fc664f2
more granular key access
...
// FREEBIE
2018-01-31 16:08:03 -08:00
Michael Kirk
426c9baa16
Key material changes
...
- For new installs, generate raw key-spec rather than derive it
- Adapt to separated concerns of the key derivation migration from the unencrypted header migration
- Reduce number of places where we delete/generate keying information
- Only store relevant keying material
// FREEBIE
2018-01-31 16:08:03 -08:00
Michael Kirk
938b9c85b8
Don't crash on clean install
...
Otherwise we'll error when retrieving non-existent password.
// FREEBIE
2018-01-31 13:28:14 -08:00
Matthew Chen
4bfdef520a
Respond to CR.
2018-01-30 12:39:27 -05:00
Matthew Chen
963d0547ad
Clean up ahead of PR.
2018-01-30 10:31:13 -05:00
Matthew Chen
ebbe96a5d5
Clean up ahead of PR.
2018-01-30 10:31:13 -05:00
Matthew Chen
6eddfae214
Improve post-migration testing tools.
2018-01-30 10:31:13 -05:00
matthew chen
8325c37191
Fix build breakage.
2018-01-30 10:30:28 -05:00
matthew chen
873c789132
Fix build breakage.
2018-01-30 10:30:28 -05:00
Matthew Chen
b9ec7d96e9
Register all database views asynchronously.
2018-01-30 10:30:28 -05:00
Matthew Chen
aeeef43416
Register all database views asynchronously.
2018-01-30 10:30:28 -05:00
Matthew Chen
eb180ba5c4
Register all database views asynchronously.
2018-01-30 10:30:28 -05:00
Matthew Chen
100adae245
Register all database views asynchronously.
2018-01-30 10:30:28 -05:00
Matthew Chen
5cf89a0f3d
Register all database views asynchronously.
2018-01-30 10:30:28 -05:00
Matthew Chen
6f7f1b3b08
Improve pre-migration testing tools.
2018-01-30 10:06:46 -05:00
Matthew Chen
6a81d8e5c2
Respond to CR.
2018-01-25 13:16:35 -05:00
Matthew Chen
0cc7f3e00e
Clean up ahead of PR.
2018-01-25 11:00:38 -05:00
Matthew Chen
5d422e03d1
Add support for key specs.
2018-01-25 11:00:38 -05:00
Matthew Chen
c5079ed3d7
Add support for key specs.
2018-01-25 11:00:38 -05:00
Matthew Chen
a3e77019e2
Update storage to use database salts.
2018-01-25 11:00:38 -05:00
Matthew Chen
173da64bc4
Modify YapDatabase to read converted database, part 1.
2018-01-25 11:00:38 -05:00
Michael Kirk
71dc7f55d3
Copy DB setup / keying from Yap into conversion
...
// FREEBIE
2018-01-25 11:00:38 -05:00
Matthew Chen
1bff0f2b0e
Incomplete commit starting work on loading databases for conversion.
2018-01-25 11:00:38 -05:00
Matthew Chen
dc73342573
Convert databases if necessary.
2018-01-25 11:00:38 -05:00
Michael Kirk
a423fe8a0e
WIP Merge tag '2.19.4.4'
...
- restore video playback in fullscreen
This was a large merge, so I'm opting to make some changes in separate
commits.
2018-01-16 15:25:58 -05:00
Matthew Chen
0d5b5bc44c
Respond to CR.
2018-01-12 16:49:51 -05:00
Matthew Chen
3de9a4ea55
Add debug UI actions around clearing and snapshotting session state.
2018-01-12 16:42:18 -05:00
Matthew Chen
2b528ad894
Don't use mainApplicationState in business logic.
2018-01-12 14:24:35 -05:00
Matthew Chen
76676659f8
Respond to CR.
2018-01-12 10:25:04 -05:00
Matthew Chen
15b8e58324
Retain changes from session database branch.
2018-01-12 10:23:54 -05:00
Matthew Chen
16f7317579
Complete backup restore/import.
2018-01-11 10:44:03 -05:00
Matthew Chen
1839b10550
Retain changes from session database branch.
2018-01-10 12:18:34 -05:00
Matthew Chen
9ac2383a2c
Retain changes from session database branch.
2018-01-10 12:18:29 -05:00
Michael Kirk
8d2934d86e
CR: remove unnecessary code, comments
...
// FREEBIE
2018-01-08 15:11:35 -05:00
Matthew Chen
d01ec57f0e
Fix storage reset.
2018-01-08 10:51:56 -05:00
Michael Kirk
81268012e5
Better keyboard management.
...
- fixes problems on iOS11.2 where emoji keyboard sometimes obscures text
input.
- better animation for interactive pan gesture when viewing message
details
- more intuitive swipe-to-dismiss keyboard in conversation view
- converge on one mnethod for dismissing keyboard in conversation view
- [ ] Pop keyboard, then hit attachment, dismisses keyboard, which is
fine, but the content should immediately scroll down with the
keyboard, instead it stays up, and scrolls down only once the
attachment action sheet has been dismissed.
// FREEBIE
2018-01-08 01:10:31 -05:00
Matthew Chen
05100b1143
Respond to CR.
2017-12-20 11:32:48 -05:00
Matthew Chen
6b0e3508a5
Respond to CR.
2017-12-20 11:28:07 -05:00
Matthew Chen
245304116f
Respond to CR.
2017-12-20 11:19:09 -05:00
Matthew Chen
085f8a6f64
Clean up ahead of PR.
2017-12-19 12:02:58 -05:00
Matthew Chen
70926d7f10
Clean up ahead of PR.
2017-12-19 11:50:01 -05:00
Matthew Chen
6b58b4cbde
Rework database view registration.
2017-12-19 11:42:06 -05:00
Matthew Chen
fe67cd924c
Rework database view registration.
2017-12-19 11:42:06 -05:00
Matthew Chen
f88b954ab5
Clean up TSStorageManager usage.
2017-12-19 11:41:31 -05:00
Matthew Chen
d3efb2e1c9
Clean up TSStorageManager usage.
2017-12-19 11:41:31 -05:00
Matthew Chen
d52eba739d
Clean up TSStorageManager usage.
2017-12-19 11:41:31 -05:00
Matthew Chen
85686d3144
Continue TSStorageManager refactor.
2017-12-19 11:41:30 -05:00
Matthew Chen
9a990b58e8
Respond to CR.
2017-12-19 11:38:25 -05:00
Matthew Chen
1163e76dee
Clean up ahead of PR.
2017-12-19 11:16:01 -05:00
Matthew Chen
5dcf4b3bbc
Clean up ahead of PR.
2017-12-19 11:16:01 -05:00
Matthew Chen
137fe6fb8b
Pull out OWSStorage base class for TSStorageManager.
2017-12-19 11:16:01 -05:00
Matthew Chen
a29c4ce5d6
Pull out OWSStorage base class for TSStorageManager.
2017-12-19 11:16:01 -05:00
Matthew Chen
3643414da1
Respond to CR.
2017-12-15 11:16:07 -05:00
Matthew Chen
571840b1dc
Update YapDatabase.
2017-12-15 11:11:04 -05:00
Matthew Chen
b9b3eb0541
Clean up ahead of PR.
2017-12-11 12:28:28 -05:00
Matthew Chen
429312523f
Simplify OWSUserProfile's "apply changes" logic using model diffing.
2017-12-11 12:28:28 -05:00
Matthew Chen
f684482c54
Don't emit "user profile changed" notifications if nothing changed.
2017-12-11 12:28:28 -05:00
Matthew Chen
97ce1a6675
Rework user profile saves; block SAE if no local user profile key.
2017-12-11 12:28:28 -05:00
Matthew Chen
f5353fc7d5
Clean up ahead of PR.
2017-12-05 11:35:43 -05:00
Matthew Chen
9da165b846
Continue conversion of app setup.
2017-12-05 11:19:11 -05:00
Matthew Chen
c817aa51b3
Migrate environment to SignalMessaging.
2017-12-05 10:28:46 -05:00
Michael Kirk
0138777343
New @available syntax avoids compiler warnings
...
// FREEBIE
2017-12-04 12:50:28 -05:00
Michael Kirk
5e7ca89930
Proper function prototypes
...
// FREEBIE
2017-12-04 12:50:28 -05:00
Matthew Chen
bf21d0c0ed
Enable logging in SAE; rework log file management to include multiple log directories.
2017-12-01 12:55:47 -05:00
Matthew Chen
e7df2511a4
Register CrossProcessNotifier.
2017-11-30 10:28:05 -05:00
Matthew Chen
62cf9b1dd5
Respond to CR.
2017-11-30 10:19:34 -05:00
Matthew Chen
d17ccadea2
Use AppContext to resolve share extension FIXMEs.
2017-11-30 10:12:32 -05:00
Matthew Chen
e712e8bfc4
Use AppContext to resolve share extension FIXMEs.
2017-11-30 10:12:24 -05:00
Matthew Chen
8d4e9b4565
Respond to CR.
2017-11-30 10:02:04 -05:00
Matthew Chen
edaf65223a
Migrate to shared data NSUserDefaults.
2017-11-30 09:49:01 -05:00
Matthew Chen
cd11ec5698
Add app group, share keychain. Take a first pass at file migration to shared data directory.
2017-11-30 09:49:01 -05:00
Michael Kirk
336aa13520
Avoid overzealous assert
...
// FREEBIE
2017-11-29 14:57:04 -08:00
Michael Kirk
a11d83187b
WIP: Framework-friendly - compiles but crashes on launch
...
// FREEBIE
2017-11-29 13:58:27 -08:00
Michael Kirk
7894a58769
FIXME: Changes to get share extension compiling
...
This was a slash and burn approach, and breaks existing functionality.
We need to address all of these before merging.
// FREEBIE
2017-11-29 13:58:27 -08:00
Matthew Chen
2d8a7b03d0
Respond to CR.
...
// FREEBIE
2017-11-16 10:12:47 -05:00
Matthew Chen
19ba564f80
Respond to CR.
...
// FREEBIE
2017-11-15 13:21:31 -05:00
Matthew Chen
00feb14b10
Respond to CR.
...
// FREEBIE
2017-11-15 13:15:48 -05:00
Matthew Chen
518f15155a
Respond to CR.
...
// FREEBIE
2017-11-10 12:57:16 -05:00
Matthew Chen
efcd42012c
Respond to CR.
...
// FREEBIE
2017-11-10 12:57:16 -05:00
Matthew Chen
6e840ff956
Fix build warnings from XCode 9.
2017-11-09 02:52:44 -05:00
Matthew Chen
da7338580c
Merge tag '2.18.1.0'
2017-11-06 14:28:43 -05:00
Michael Kirk
e82a3f3ddf
respond to CR
...
// FREEBIE
2017-11-06 13:39:23 -05:00
Michael Kirk
8ef9e96b91
Avoid group-sync deadlock by making post-upload save async
...
// FREEBIE
2017-11-06 13:39:23 -05:00
Michael Kirk
0706edf42a
Generate new registrationId on re-register
...
In order for others to know they should start a new session with us, we
need to change our registration id.
To achieve this, I consolidated all the Account related attributes on
TSAccountManager - luckily they were already in the proper collection, I
just moved the API to hang on the AccountManager instead of a TSStorage
category extension.
Also:
@synchronize access to `registrationId`
// FREEBIE
2017-11-02 16:05:41 -04:00
Michael Kirk
58d4c95362
Re-register without losing your messages in Debug-UI
...
// FREEBIE
2017-11-02 16:05:41 -04:00
Matthew Chen
834ad3f8e1
Respond to CR.
...
// FREEBIE
2017-09-27 14:22:01 -04:00
Matthew Chen
eec0efa3c8
Fix class rename.
...
// FREEBIE
2017-09-27 14:22:01 -04:00
Matthew Chen
ee13084d5c
Respond to CR.
...
// FREEBIE
2017-09-27 14:05:21 -04:00
Matthew Chen
ffe44e68be
Refactor linked device read receipts.
...
// FREEBIE
2017-09-27 13:17:43 -04:00
Matthew Chen
35a2470cb7
Post notifications asynchronously.
...
// FREEBIE
2017-09-21 17:03:57 -04:00
Matthew Chen
6fce2c26b7
Process messages in a single transaction (wherever possible).
...
// FREEBIE
2017-09-20 09:40:46 -04:00
Matthew Chen
afc753e7ed
Add batch message processor.
...
// FREEBIE
2017-09-20 09:24:49 -04:00
Matthew Chen
c498e4b354
Decouple message decryption and processing.
...
// FREEBIE
2017-09-20 09:24:49 -04:00
Matthew Chen
bfd50a9e0e
Make "database view registration complete" check thread-safe.
...
// FREEBIE
2017-09-20 09:21:05 -04:00
Matthew Chen
183f0f1ccd
Respond to CR.
...
// FREEBIE
2017-09-19 17:45:18 -04:00
Matthew Chen
703b348091
Respond to CR.
...
// FREEBIE
2017-08-23 09:55:53 -04:00
Matthew Chen
a9b55675cd
Add assert to ensure that we don't use write transactions before sync database view registration is complete.
...
// FREEBIE
2017-08-23 09:46:26 -04:00
Matthew Chen
a825fad47b
Start reworking the contact offers.
...
// FREEBIE
2017-08-21 17:05:42 -04:00
Matthew Chen
98eb4693c5
Rework the contact offers.
...
// FREEBIE
2017-08-21 17:05:42 -04:00
Matthew Chen
164bf19b47
Respond to CR.
...
// FREEBIE
2017-08-17 11:22:25 -04:00
Matthew Chen
622c0c3f5f
* Add debug UI tools for clearing and logging the profile whitelist.
...
* Auto-add new contact threads to profile whitelist when local user sends first message to that thread.
* Ensure dynamic interactions have a non-negative timestamp even if the conversation was empty.
* Only call updateMessageMappingRangeOptions _after_ beginLongLivedReadTransaction and updating messageMappings.
* Improve documentation around how to avoid corrupt mappings in conversation view.
* Fix edge cases around large initial range sizes.
* Always treat dynamic interactions as read.
* Rebuild the “unseen” database views to remove dynamic interactions (see above).
// FREEBIE
2017-08-17 11:22:25 -04:00
Matthew Chen
d476bc286d
* Add debug UI tools for clearing and logging the profile whitelist.
...
* Auto-add new contact threads to profile whitelist when local user sends first message to that thread.
* Ensure dynamic interactions have a non-negative timestamp even if the conversation was empty.
* Only call updateMessageMappingRangeOptions _after_ beginLongLivedReadTransaction and updating messageMappings.
* Improve documentation around how to avoid corrupt mappings in conversation view.
* Fix edge cases around large initial range sizes.
* Always treat dynamic interactions as read.
* Rebuild the “unseen” database views to remove dynamic interactions (see above).
// FREEBIE
2017-08-17 11:22:25 -04:00
Michael Kirk
01e808febe
localNumber persistance from Category -> TSAccountManager
...
Following the pattern that singleton methods for effectively global
state should get/set on their own dedicated dbConnection for consistency
and to avoid being blocked by unrelated writes.
2017-08-03 13:27:09 -04:00
Michael Kirk
8a4712bf4c
Only access localNumber on AccountManager and cache it
...
// FREEBIE
2017-08-03 13:27:09 -04:00
Matthew Chen
43b3abe321
Merge branch 'hotfix/2.15.2'
2017-08-03 13:10:01 -04:00
Matthew Chen
539490ee19
Respond to CR.
...
// FREEBIE
2017-08-03 12:05:53 -04:00
Matthew Chen
6f03c2d92f
Don’t hide threads if they are a group thread, or if they have _ever_ had a message.
...
// FREEBIE
2017-08-02 15:12:42 -04:00
Matthew Chen
2993ac002f
Clean up database convenience methods and add assertions.
...
// FREEBIE
2017-08-02 10:47:42 -04:00
Matthew Chen
7692a393c1
Add convenience category for YapDatabaseConnection.
...
// FREEBIE
2017-08-02 10:38:23 -04:00
Matthew Chen
0bd23345a1
Sketch out the profile view.
...
// FREEBIE
2017-08-01 16:17:59 -04:00
Michael Kirk
4bf407a24f
fix some compiler warnings
...
// FREEBIE
2017-07-31 11:56:47 -04:00
Matthew Chen
678db31c1f
Hide empty conversations in home view.
...
// FREEBIE
2017-07-27 15:40:35 -04:00
Matthew Chen
c042a96aa4
Hide empty conversations in home view.
...
// FREEBIE
2017-07-27 15:40:35 -04:00
Matthew Chen
c6e21e83a3
Hide empty conversations in home view.
...
// FREEBIE
2017-07-27 15:40:35 -04:00
Matthew Chen
103a7fab36
Hide empty conversations in home view.
...
// FREEBIE
2017-07-27 15:39:26 -04:00
Matthew Chen
f1807cd709
Add script to extract and gather analytics event names.
...
// FREEBIE
2017-07-27 12:29:05 -04:00
Matthew Chen
f973af5a83
Streamline analytics properties.
...
// FREEBIE
2017-07-27 10:16:16 -04:00
Michael Kirk
4d8429186d
Store undecrypted envelopes before doing any processing.
...
This lets us clear the server side queue immediately, and paves the way
for retry, give up logic.
// FREEBIE
2017-07-26 14:29:56 -04:00
Matthew Chen
7cbdde7b1d
Rework handling of critical errors, e.g. errors while initializing TSStorageManager.
...
// FREEBIE
2017-07-26 10:01:43 -04:00
Matthew Chen
543c05b2c5
Add a “critical” severity level for analytics events.
...
// FREEBIE
2017-07-24 16:13:59 -04:00
Matthew Chen
7da5df594f
Instrument errors in storage manager.
...
// FREEBIE
2017-07-24 16:05:39 -04:00
Matthew Chen
19c0a7ad7c
Instrument errors in message sender.
...
// FREEBIE
2017-07-24 16:05:39 -04:00
Michael Kirk
a5f067936c
migration to fix any half-registered users
...
// FREEBIE
2017-07-24 13:01:43 -04:00
Matthew Chen
64a99c63b3
[SSK] Migrating changes from obsolete SSK repo.
...
// FREEBIE
2017-07-21 15:08:37 -04:00
Michael Kirk
ccb4a88742
Import SSK (and history) into Signal-iOS
...
git remote add ssk ../SignalServiceKit
git remote update
git merge -s ours --allow-unrelated-histories --no-commit ssk/master
git read-tree --prefix=SignalServiceKit -u ssk/master
git commit
2017-07-21 13:55:01 -04:00