Commit graph

412 commits

Author SHA1 Message Date
Matthew Chen 14122dab54 Fix the storage failure alert. 2018-02-20 13:46:37 -05:00
Matthew Chen 6935298f6f Improve handling of the not migrated case. 2018-02-16 15:19:24 -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 44cbf142a1 Respond to CR. 2018-02-12 22:41:52 -05:00
Matthew Chen 3e8b08e19b Defer handling app delegate hooks until app is ready. 2018-02-12 22:37:37 -05:00
Matthew Chen 9c8178653d Revisit TODOs in the SAE work. 2018-02-12 22:33:26 -05:00
Matthew Chen 7c199faf8f Respond to CR. 2018-02-12 22:26:35 -05:00
Matthew Chen 98843cd45c Let users submit debug logs if app launch fails. 2018-02-12 22:25:23 -05: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 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 a30170b3b2 Prefer "app is ready" flag to "storage is ready" flag. 2018-01-30 11:34:00 -05:00
Matthew Chen be1fde905c Don't mark app as ready until all version migrations are done. 2018-01-30 11:27:44 -05:00
Matthew Chen 963d0547ad Clean up ahead of PR. 2018-01-30 10:31:13 -05:00
Matthew Chen 8e427111ef 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 f9f60bc14f Ensure app delegate hooks are ignored until app is ready. 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 02a972c9dc Improve logging in database conversion; disable orphan cleanup. 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 5d422e03d1 Add support for key specs. 2018-01-25 11:00:38 -05:00
Michael Kirk c6cc497eaf Don't migrate database until verifying keychain is accessible
// FREEBIE
2018-01-25 11:00:38 -05:00
Matthew Chen dc73342573 Convert databases if necessary. 2018-01-25 11:00:38 -05:00
Matthew Chen 59933ce1d6 Fix rebase breakage. 2018-01-11 11:15:50 -05:00
Matthew Chen 16f7317579 Complete backup restore/import. 2018-01-11 10:44:03 -05:00
Matthew Chen fe67cd924c Rework database view registration. 2017-12-19 11:42:06 -05:00
Matthew Chen 9258b0883e 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 f9ce34f553 Improve background task logic. 2017-12-19 11:05:17 -05:00
Matthew Chen bc7f4623cc Update YapDatabase. 2017-12-15 11:11:04 -05:00
Michael Kirk 3affb07a11 post-merge formatting fixup
// FREEBIE
2017-12-14 11:43:27 -05:00
Michael Kirk 16448e2a0b Merge tag '2.19.3.0' 2017-12-14 11:42:57 -05:00
Michael Kirk 42dc872c9a use dedicated read connection to pre-populate cache
// FREEBIE
2017-12-13 19:08:47 -05:00
Michael Kirk 7ea4b85a2a Persist signal accounts (and their embedded Contact)
// FREEBIE
2017-12-13 17:31:36 -05:00
Matthew Chen 911c4d380b Rework thread safety in profile manager. 2017-12-11 12:28:28 -05:00
Michael Kirk 3ecf0a7537 Cancelling dismisses share extension, remove "import with signal"
Usinig the new ShareViewDelegate to dismiss the share extension, might
have broken the "import with signal" functionality. But because we
want to remove it anyway, I've done that now, rather than fix it up.

// FREEBIE
2017-12-07 17:12:03 -05:00
Matthew Chen 7a1e47cd26 Add asserts around Swift singletons. 2017-12-07 13:57:45 -05:00
Matthew Chen 8312614cf7 Respond to CR. 2017-12-07 13:53:13 -05:00
Matthew Chen 99f0b9d3e8 Fix issues around statics. 2017-12-07 12:34:02 -05:00
Matthew Chen 848f055da1 Add SAE error views. 2017-12-06 21:38:53 -05:00
Matthew Chen 310cf1330d Continue conversion of app setup. 2017-12-06 10:38:57 -05:00
Matthew Chen 8d014f057e Respond to CR. 2017-12-05 13:44:25 -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 2eba371656 Clean up ahead of PR. 2017-12-05 10:29:29 -05:00
Matthew Chen b4e8df79da Migrate environment to SignalMessaging. 2017-12-05 10:29:29 -05:00
Matthew Chen c817aa51b3 Migrate environment to SignalMessaging. 2017-12-05 10:28:46 -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 66fae5bd54 Clean up ahead of PR. 2017-11-30 10:07:39 -05:00
Matthew Chen ffa69b3502 Add application context class. 2017-11-30 10:07:20 -05:00
Matthew Chen 8d4e9b4565 Respond to CR. 2017-11-30 10:02:04 -05:00
Matthew Chen 7429e1968c Clean up ahead of PR. 2017-11-30 09:49:01 -05:00
Matthew Chen edaf65223a Migrate to shared data NSUserDefaults. 2017-11-30 09:49:01 -05:00
Michael Kirk 2c4cf96515 Some proof of framework integration in the sample share extension
// FREEBIE
2017-11-29 13:58:27 -08:00
Michael Kirk de028404bb Shared framework between app and extension
// FREEBIE
2017-11-29 13:58:27 -08:00
Matthew Chen a6bfc0a60e Fix build warnings from XCode 9. 2017-11-09 02:52:44 -05:00
Matthew Chen 204902c111 Respond to CR.
// FREEBIE
2017-11-06 12:50:20 -05:00
Matthew Chen 03241128f6 Respond to CR.
// FREEBIE
2017-11-06 12:37:15 -05:00
Matthew Chen 1ea413ad48 Be more defensive about handling local notifications.
// FREEBIE
2017-11-06 11:14:31 -05:00
Matthew Chen 5af6b6f213 Respond to CR.
// FREEBIE
2017-10-26 11:53:35 -04:00
Michael Kirk c5244e175e orphan cleanup shouldn't happen until DB is registered
// FREEBIE
2017-10-21 18:16:52 -07:00
Michael Kirk 6a65ee6def Pull to refresh on homeview fetches messages.
This is useful when you're using censorship circumvention and unable to
receive push notifications.

// FREEBIE
2017-10-16 12:25:07 -07:00
Michael Kirk 9a7e3cb9d8 Register for manual message fetching when unable to obtain push tokens
// FREEBIE
2017-10-12 12:02:22 -04:00
Michael Kirk df15c904bc Rework push registration
== Account Registration ==

Not complete until push tokens are uploaded

== Remote Notifications Registration ==

Extracted from PushManager

- wait for notification-settings registration to complete before
  requesting push tokens, otherwise it's possible token requests will
  be ignored.

- Less state required for push notification callbacks, specifically, we
  no longer need to ensure we've created a promise before the
  registration delegate methods get called.

- no more TOCFuture in Signal-iOS (still in SSK for now). It's not in
  cases of inexplicable behavior - one a recently, push notification
  premature free, in redphone, and more popular use, and I've seen two
  futures inexplicably being nil.  Instead, let's consolidate around
  PromiseKit for popularly used, maintained, strongly-typed futures.

- separate logic for registering for vanilla push/voip notifications
  (few dependencies) from responding to UILocalNotifications (lots of
  dependencies). Ultimately I'd like to consolidate the remaining
  UILocalNotifications logic with the existing NotificationsManager

== Misc ==

more debug logging
more uniform logging
remove stale logic around newly registered user

// FREEBIE
2017-10-12 12:02:22 -04:00
Michael Kirk b5258be9b5 respond to code review
// FREEBIE
2017-10-10 11:33:40 -04:00
Michael Kirk 876521f4c3 Fetch messages sooner when launched from background
The only reason a notification wakes/launches the app is to fetch
messages.

However, upon launching, especially if the app had been killed, it can
take a second or two before being notified of the notification that woke
us. Rather than wait, just fetch messages ASAP.

// FREEBIE
2017-10-10 11:33:40 -04:00
Michael Kirk c7cfe188ee Sync push tokens on background launch as well
// FREEBIE
2017-10-10 11:33:40 -04:00
Matthew Chen 10c00501fd Fix the "is contact" test.
// FREEBIE
2017-10-02 17:38:54 -04:00
Matthew Chen f001e8c225 Respond to CR.
// FREEBIE
2017-09-25 17:22:27 -04:00
Matthew Chen b4312a5619 Merge remote-tracking branch 'origin/hotfix/2.16.1' 2017-09-24 20:49:13 -04:00
Matthew Chen 825503210b Remove extraneous database view.
// FREEBIE
2017-09-22 14:24:17 -04:00
Matthew Chen 11cadf4200 Send, receive & show read receipts to senders/from receivers.
* Send read receipts to senders.
* Honor "send read receipts" preference.
* Process read receipts from recipients.
* Refactor "mark as read" logic.
* Serialize and apply recipient read receipts received before sync transcript.
* Show recipient read receipts in conversation view.

// FREEBIE
2017-09-22 14:24:17 -04:00
Matthew Chen 1c8dbcd223 Respond to CR.
// FREEBIE
2017-09-21 16:58:07 -04:00
Matthew Chen 3eaeb4e0ec Add read receipts manager.
* Simplify read receipts plumbing.
* Rework incoming read receipts handling.
* Rework outgoing read receipts handling.
* Make "database view registration complete" check thread-safe.
* Don't send sync messages to self if no linked devices.

// FREEBIE
2017-09-21 16:23:03 -04:00
Matthew Chen b28c4b74b2 Pull out TSMessageDecrypter class.
// FREEBIE
2017-09-21 14:38:30 -04:00
Michael Kirk 73bdae3366 Fix 1-time crash when launching 2.16 from notification
didBecomeActive is too late in the case of launching from a
notification.

Also, start tracking when app setup is complete, and prevent certain
actions from occurring in that case. Eventually we'll enqueue these
actions rather than ignoring them, but we'll want to do more testing
before releasing that. In the meanwhile, if the environment isn't setup
at this point, a crash would be eminent anyway.

// FREEBIE
2017-09-20 13:26:32 -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 65732af3da New users opt-out of read receipts; legacy users opt-in.
// FREEBIE
2017-09-19 17:35:42 -04:00
Matthew Chen 80e5f281c6 Rename app preferences class.
// FREEBIE
2017-09-19 17:35:42 -04:00
Matthew Chen 3367292ba0 Merge branch 'hotfix/2.16.1' 2017-09-19 17:25:24 -04:00
Matthew Chen f92b221e6b Startup logging.
// FREEBIE
2017-09-19 17:22:56 -04:00
Matthew Chen 70602e3bca Startup logging.
// FREEBIE
2017-09-19 17:22:56 -04:00
Matthew Chen 400f536e37 Respond to CR.
// FREEBIE
2017-09-19 09:30:01 -04:00
Matthew Chen e222b9df68 Normalize conversation presentation logic.
// FREEBIE
2017-09-18 16:08:18 -04:00
Matthew Chen b6d782046a Normalize conversation presentation logic.
// FREEBIE
2017-09-18 16:08:18 -04:00
Matthew Chen 0b772b3a37 Move post-registration work from view to app delegate.
// FREEBIE
2017-09-14 15:29:59 -04:00
Matthew Chen ab00342d67 Add modal activity indicator view.
// FREEBIE
2017-09-11 12:49:14 -04:00
Matthew Chen 9dfebb2d4b Apply OWSFail() in more places.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen c21a7673c8 Rework preservation of attachment filenames.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen 69816cdf0e Convert DataSource to Objective-C.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen 2282733fa9 Add data source class.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen 948da2afbb Merge remote-tracking branch 'origin/release/2.16.0' 2017-09-07 15:20:45 -04:00
Michael Kirk 04bf548a7b Fix one-time crash when opening thread without having a local profile
// FREEBIE
2017-09-07 13:24:15 -04:00
Matthew Chen 928525c31e Rename home view.
// FREEBIE
2017-09-06 13:59:39 -04:00
Matthew Chen 3c90c3361a Respond to CR.
// FREEBIE
2017-08-29 16:31:27 -04:00
Matthew Chen 71d7490e35 Re-sync local profile state with service if necessary.
// FREEBIE
2017-08-29 16:29:54 -04:00
Michael Kirk 1f3d2d1ed6 Send any profile key in contact sync
// FREEBIE
2017-08-29 10:35:18 -04:00
Michael Kirk b579ea5915 Use profile name when building avatar if contact name is unavailable
// FREEBIE
2017-08-25 12:40:19 -04:00
Matthew Chen 98eb4693c5 Rework the contact offers.
// FREEBIE
2017-08-21 17:05:42 -04:00
Matthew Chen 08347478a2 Implement alternative approach to veto-able back buttons.
// FREEBIE
2017-08-21 10:10:22 -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 2e83643327 Don't consider registration complete until user registers their push
notification tokens.

// FREEBIE
2017-08-17 10:56:36 -04:00
Michael Kirk ed4de7e8af Simplify code / pre-cache localNumber
Now that localNumber is read from a dedicated dbConnection we don't have
to worry about it blocking.

// FREEBIE
2017-08-04 15:19:26 -04:00
Matthew Chen 6ec756de44 Move profile manager to Signal.
// FREEBIE
2017-08-04 09:45:33 -04:00
Matthew Chen a3b16812ec Add convenience category for YapDatabaseConnection.
// FREEBIE
2017-08-02 10:38:23 -04:00
Matthew Chen 03a4ebc4d8 Respond to CR.
// FREEBIE
2017-08-01 16:30:24 -04:00
Matthew Chen c331788c06 Modify the profile view to update profile manager state.
// FREEBIE
2017-08-01 16:17:59 -04:00
Michael Kirk a196693425 Make sure DB views are ready before kicking processing job
// FREEBIE
2017-07-28 17:12:47 -04:00
Michael Kirk 6a5c6a9fc9 didBecomeActive kicks the processing queue
// FREEBIE
2017-07-28 17:12:47 -04:00
Matthew Chen 1890039165 Hide empty conversations in home view.
// FREEBIE
2017-07-27 15:40:19 -04:00
Matthew Chen bca736a2b7 Merge tag '2.13.4.0'
// FREEBIE
2017-07-27 15:04:03 -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
Matthew Chen 013bf62f7c Streamline analytics properties.
// FREEBIE
2017-07-27 10:16:16 -04:00
Matthew Chen 117bca7c48 Instrument errors in app delegate.
// FREEBIE
2017-07-24 16:05:39 -04:00
Matthew Chen fdac0305cb Update analytics macros.
// FREEBIE
2017-07-21 15:04:41 -04:00
Matthew Chen 54a5b960c7 Add a reminder that you are in archive view.
// FREEBIE
2017-07-11 16:01:19 -04:00
Matthew Chen 2e727a24b5 Convert home view to programmatic layout.
// FREEBIE
2017-07-11 16:01:19 -04:00
Matthew Chen 9cbc1e6a1b Block device from sleeping while Debug UI is visible and during database upgrades.
// FREEBIE
2017-07-06 17:35:47 -04:00
Matthew Chen 9aa54cad63 Fix missing “database upgrade” label on launch screen.
// FREEBIE
2017-07-06 15:10:47 -04:00
Matthew Chen ab9770c175 Fix missing “database upgrade” label on launch screen.
// FREEBIE
2017-07-06 15:05:09 -04:00
Matthew Chen 5038744811 Fix missing “database upgrade” label on launch screen.
// FREEBIE
2017-07-06 15:05:09 -04:00
Matthew Chen 944cd7beef Show app update nag on launch if necessary.
// FREEBIE
2017-07-06 12:56:27 -04:00
Michael Kirk 8e891eb357 Merge branch 'hotfix/2.13.3.0'
// FREEBIE
2017-07-06 09:33:57 -05:00
Matthew Chen c5bf85d0b3 Respond to CR.
// FREEBIE
2017-07-05 18:49:02 -04:00
Matthew Chen ab3aa9d0ce Respond to CR.
// FREEBIE
2017-07-05 18:12:06 -04:00
Matthew Chen 97169f521a Move more initialization until after didBecomeActive is complete to avoid the “bad food” crash.
// FREEBIE
2017-07-05 17:54:22 -04:00
Michael Kirk 89260e843f Unregistered users should have 0 badge count
// FREEBIE
2017-07-05 11:34:23 -05:00
Michael Kirk a933fbf215 sync verifications with contact syncing
// FREEBIE
2017-06-22 15:21:25 -04:00
Matthew Chen 0738568b94 Fix upgrade launch screen.
// FREEBIE
2017-06-20 17:48:11 -04:00
Matthew Chen 5ae4b99f89 Refine observation of async registration completion.
// FREEBIE
2017-06-20 13:17:44 -04:00
Matthew Chen 9f2a2d1ee6 Don’t show “export with Signal” UI until async database view registration is complete.
// FREEBIE
2017-06-19 17:38:09 -04:00
Matthew Chen 3e38967590 Do not show database upgrade screen for unregistered users.
// FREEBIE
2017-06-16 12:07:15 -04:00
Matthew Chen f9fcbad1aa Add a “last app completed launch” version.
// FREEBIE
2017-06-16 12:07:15 -04:00
Matthew Chen cf3101226b Improve the upgrade screen.
// FREEBIE
2017-06-16 12:06:53 -04:00
Matthew Chen 16dd87a407 Use launch screen as root view controller while database views are loading.
// FREEBIE
2017-06-15 17:15:56 -04:00
Matthew Chen c7426f9343 Avoid crashing on startup due to database view creation.
* Substitute unread view for unseen view until unseen view is ready.
* Register as many views as possible async.
* Perform blocking, safe migrations before async registration of views.
* Add debug settings view for internal app stats.
* Show blocking overlay until async registration of database views is complete.
* Convert version migrations to use AppVersions.

// FREEBIE
2017-06-15 13:44:30 -04:00
Matthew Chen 05e316381b Remove “block on safety number changes” setting in preferences.
// FREEBIE
2017-06-14 14:36:21 -04:00
Matthew Chen 3a83f93099 Tweak appearance of registration views.
// FREEBIE
2017-05-30 09:29:19 -04:00
Matthew Chen d065c95270 Hide the socket status view when censorship circumvention is active.
// FREEBIE
2017-05-26 20:41:27 -04:00
Michael Kirk 2c7ccbe5db Make sure screen protection is applied before ending bg task
* code cleanup
* Prefer dispatch_async vs. dispatch_sync when possible

// FREEBIE
2017-05-26 09:45:51 -07:00
Michael Kirk bb25d2beb6 IdentityKeyStore changes
1) Always accept keys from incoming messages

2) Block sending only if it's a recent change, or if always
   block is enabled

// FREEBIE

// FREEBIE
2017-05-24 18:01:24 -07:00
Matthew Chen 2475406258 Respond to CR.
// FREEBIE
2017-05-24 17:47:56 -04:00
Matthew Chen 4680a2465a Remove registration storyboard.
// FREEBIE
2017-05-24 17:46:32 -04:00
Michael Kirk 929ba06263 Merge branch 'hotfix/2.11.4' into mkirk/fix-push-sync-job 2017-05-10 16:56:41 -04:00
Matthew Chen 19b80d1f4b Rework the “disappearing messages” logic.
// FREEBIE
2017-05-10 15:02:16 -04:00