Commit graph

456 commits

Author SHA1 Message Date
Michael Kirk 295646e5fa Rebase cleanup
// FREEBIE
2017-11-02 16:05:41 -04: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 1fa75ead5d Respond to CR.
// FREEBIE
2017-11-02 14:10:45 -04:00
Matthew Chen 74096fc2c2 Don't send sync messages to self if no linked devices.
// FREEBIE
2017-11-02 13:33:44 -04:00
Matthew Chen db8a381960 Merge remote-tracking branch 'origin/release/2.18.0' 2017-11-01 12:02:37 -04:00
Michael Kirk cf9874302b Remove unecessary subdata for unpadded attachment
// FREEBIE
2017-10-27 08:51:23 -07:00
Michael Kirk ce51d2da3e Example (disabled) padding strategy for attachment sender
The padding strategy the sender uses can change without needing to
update the receiver, so long as we continue to record the unpadded
length of the attachment in the attachment pointer.

// FREEBIE
2017-10-27 08:47:53 -07:00
Michael Kirk cbbb376860 Handle receiving padded attachments
Don't send padded attachments yet.

// FREEBIE
2017-10-27 08:47:53 -07:00
Michael Kirk 259695a9fd Attachments require digest or show explanatory error.
// FREEBIE
2017-10-27 08:42:54 -07:00
Michael Kirk 6eeb78157a Include size in attachment pointer
// FREEBIE
2017-10-26 15:11:37 -07:00
Matthew Chen 3927815a35 Fix tests broken by the JSQ rewrite.
// FREEBIE
2017-10-25 16:08:15 -04:00
Matthew Chen bf8d694eb4 Rework attachment approval UI.
// FREEBIE
2017-10-24 09:42:29 -04:00
Matthew Chen d04f9111db Rework attachment approval UI.
// FREEBIE
2017-10-24 09:42:29 -04:00
Michael Kirk 68e755ade9 Merge branch 'release/2.18.0' 2017-10-20 16:10:07 -07:00
Michael Kirk 0cd56d4bcc On iOS11 doc picker requires system appearance.
Otherwise nav items are illegible.

// FREEBIE
2017-10-20 12:35:21 -07:00
Matthew Chen 4dabb71815 Fix "can't send same GIF twice" issue.
// FREEBIE
2017-10-19 22:33:51 -04:00
Matthew Chen fb4d43d542 Fix "can't send same GIF twice" issue.
// FREEBIE
2017-10-19 10:04:49 -07:00
Matthew Chen e3868df69a Move write of incoming messages off main thread.
// FREEBIE
2017-10-18 08:36:49 -07:00
Matthew Chen 8704722f90 Don't start expiration of incoming messages until attachments are downloaded.
// FREEBIE
2017-10-17 17:48:46 -07:00
Matthew Chen 227fd5280d Resize conversation view cells as necessary.
// FREEBIE
2017-10-16 20:41:14 -07:00
Michael Kirk 0f859d6b20 Merge branch 'release/2.18.0' 2017-10-16 12:27:20 -07:00
Michael Kirk 3080cb512b Compose View: collation index and group search
- Include table index for contacts
- Fix extra spacing in OWS table view
- Separate search results into contact/invite sections
- Include groups in search results when composing new message
- Compose Screen search matches on group member names

// FREEBIE
2017-10-16 12:22:02 -07:00
Matthew Chen fb408f980c Remove JSQ.
// FREEBIE
2017-10-12 16:23:48 -04:00
Michael Kirk b2efb722d2 Log timestamp of sent messages
This is really helpful when cross referencing debug logs with the
recipient. (We already log timestamps on the receiving side).

// FREEBIE
2017-10-12 14:35:19 -04: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 703d4df9e5 Avoid phantom notifications for group info requests
// FREEBIE
2017-10-12 08:56:02 -04:00
Joshua Lund 8ff14a3f6a Enable censorship circumvention in Qatar.
// FREEBIE
2017-10-04 17:56:22 -04:00
Matthew Chen 0c46b770e9 Ignore group info requests if sender and recipient aren't both known group members.
// FREEBIE
2017-10-04 10:19:19 -04:00
Matthew Chen 13a6657991 Respond to CR.
// FREEBIE
2017-10-04 10:06:38 -04:00
Matthew Chen 2a5a0929e6 Create & access groups more carefully.
// FREEBIE
2017-10-04 09:45:09 -04:00
Matthew Chen 380ed0f82b Create & access groups more carefully.
// FREEBIE
2017-10-04 09:45:09 -04:00
Matthew Chen a31b1aeea6 Respond to "sync block list" request.
// FREEBIE
2017-10-04 09:23:14 -04:00
Michael Kirk 462a6e4456 Persist read receipts to proper collection
// FREEBIE
2017-10-03 16:06:11 -04:00
Michael Kirk 2125dbe72c CR: Avoid potential transaction nesting
also clean up description method

// FREEBIE
2017-10-03 11:11:15 -04:00
Michael Kirk 5d62741a3c Sync read receipt configuration upon set
// FREEBIE
2017-10-03 09:17:08 -04:00
Michael Kirk ab5b090338 Sync read receipt config to linked devices
// FREEBIE
2017-10-02 16:35:53 -04:00
Michael Kirk be197621ac Add read receipts field/configuration protos
Also converge with Android protos where possible

// FREEBIE
2017-10-02 16:03:17 -04:00
Michael Kirk a2421d5b3e Fix "unknown attachment" notifications
The transaction in which the attachments were created hasn't been
committed yet.

// FREEBIE
2017-09-29 15:57:54 -04:00
Matthew Chen 08e560f969 Respond to CR.
// FREEBIE
2017-09-29 14:38:34 -04:00
Matthew Chen 0a081f7dcc Use longer delay when batch processing incoming messages.
// FREEBIE
2017-09-29 14:36:22 -04:00
Matthew Chen 69c9a5a49b Use longer delay when batch processing incoming messages.
// FREEBIE
2017-09-29 14:36:22 -04:00
Matthew Chen 46d2b7a891 Refine read receipt processing cycle.
// FREEBIE
2017-09-29 14:35:12 -04:00
Matthew Chen 6b3c0377cf Refine read receipt processing cycle.
// FREEBIE
2017-09-29 14:35:12 -04:00
Matthew Chen c3dca21a69 More thread safety fixes.
// FREEBIE
2017-09-29 10:16:42 -04:00
Matthew Chen 65957c932d Respond to CR.
// FREEBIE
2017-09-28 14:49:58 -04:00
Matthew Chen 8b15dba4e7 Fix "mark as read on linked device".
// FREEBIE
2017-09-28 14:49:58 -04:00
Matthew Chen facbc56062 Move more work off the main thread.
// FREEBIE
2017-09-28 14:30:27 -04:00
Matthew Chen 9573e0e16d Move more work off the main thread.
// FREEBIE
2017-09-28 14:30:27 -04:00
Matthew Chen 1df1144e43 Respond to CR.
// FREEBIE
2017-09-28 09:18:38 -04:00
Matthew Chen 33376f66d2 Simplify processing of messages from linked devices.
// FREEBIE
2017-09-27 20:41:12 -04:00
Matthew Chen 9b5affb390 Send silent messages where appropriate.
// FREEBIE
2017-09-27 17:13:29 -04:00
Matthew Chen d557817bb4 Format message statuses with date if possible.
// FREEBIE
2017-09-27 16:38:48 -04:00
Matthew Chen 834ad3f8e1 Respond to CR.
// FREEBIE
2017-09-27 14:22:01 -04:00
Matthew Chen 01bda556c8 Fix class rename.
// FREEBIE
2017-09-27 14:22:01 -04:00
Matthew Chen 6b8c9b6bcf Iterate the names of the incoming message queue extensions.
// 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 a4d285f50d Respond to CR.
// FREEBIE
2017-09-27 14:19:26 -04:00
Matthew Chen aa7329013d Handle new-style delivery receipts.
// FREEBIE
2017-09-27 14:09:47 -04:00
Matthew Chen 25c40ea3cf Handle new-style delivery receipts.
// FREEBIE
2017-09-27 14:09:47 -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 16d4256e99 Address deadlocks in profile manager.
// FREEBIE
2017-09-27 13:00:01 -04:00
Matthew Chen 19e010645e Respond to CR.
// FREEBIE
2017-09-26 09:32:48 -04:00
Matthew Chen 9f9ac746d1 Sketch out message metadata view.
* Show message metadata view from conversation view.
* Pull out MediaMessageView class.
* Track recipient read timestamps.
* Add per-recipient status to message metadata view.
* Add share button to message metadata view.

// FREEBIE
2017-09-25 17:25:49 -04:00
Matthew Chen f001e8c225 Respond to CR.
// FREEBIE
2017-09-25 17:22:27 -04:00
Michael Kirk ce2a4422e3 fix desktop linking for some users
// FREEBIE
2017-09-25 17:00:50 -04:00
Matthew Chen b74da07f7e Respond to CR.
// FREEBIE
2017-09-22 15:15:04 -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 f2d19ffe09 Respond to CR.
// FREEBIE
2017-09-22 14:21:15 -04:00
Matthew Chen 7268bde506 Add stress group to debug UI.
// FREEBIE
2017-09-22 10:30:35 -04:00
Matthew Chen bd416176ae Add stress group to debug UI.
// FREEBIE
2017-09-22 00:31:13 -04:00
Matthew Chen 77e0c9664c Respond to CR.
// FREEBIE
2017-09-21 17:25:13 -04:00
Matthew Chen edd63164d7 Fix build breaks.
// FREEBIE
2017-09-21 17:09:55 -04:00
Matthew Chen 874ebf7038 Use private queues in message decrypter and batch processor.
// FREEBIE
2017-09-21 17:06:08 -04:00
Matthew Chen 077b74a0aa Fix handling of edge cases around groups.
// FREEBIE
2017-09-21 17:06:08 -04:00
Matthew Chen 2b0b49b7f6 Don't batch message decryption.
// FREEBIE
2017-09-21 17:06:08 -04:00
Matthew Chen bfb03c0db4 Fix message processing edge cases.
// FREEBIE
2017-09-21 17:06:08 -04:00
Matthew Chen 35a2470cb7 Post notifications asynchronously.
// FREEBIE
2017-09-21 17:03:57 -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 2cfa24ba7b Respond to CR.
// FREEBIE
2017-09-21 14:42:05 -04:00
Matthew Chen b28c4b74b2 Pull out TSMessageDecrypter class.
// FREEBIE
2017-09-21 14:38:30 -04:00
Matthew Chen f1b7d895e2 Modify precommit script to clean up includes and forward declarations.
// FREEBIE
2017-09-20 15:33:17 -04:00
Matthew Chen 993df25f3f Respond to CR.
// FREEBIE
2017-09-20 11:48:37 -04:00
Matthew Chen 46f17a02cb DRY up decryption logic.
// FREEBIE
2017-09-20 10:56:04 -04:00
Matthew Chen e39b9169b9 Decrypt and process messages in batches.
// FREEBIE
2017-09-20 10:56:04 -04:00
Matthew Chen 9987ebb3c0 Decrypt and process messages in batches.
// FREEBIE
2017-09-20 10:56:04 -04:00
Matthew Chen 023c804a61 Decrypt and process messages in batches.
// FREEBIE
2017-09-20 10:56:04 -04:00
Matthew Chen fa353259c3 Process messages in a single transaction (wherever possible).
// FREEBIE
2017-09-20 10:56:04 -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 8a4d67a6e4 Respond to CR.
// FREEBIE
2017-09-20 09:19:15 -04:00
Matthew Chen 183f0f1ccd Respond to CR.
// FREEBIE
2017-09-19 17:45:18 -04:00
Matthew Chen 74b2f30523 Revert "Modify read receipt photos to support sending read receipts to both linked devices and senders."
This reverts commit 37e67179c8a8d6ebfdfa124ef0c1229f220ed11d.
2017-09-19 17:30:48 -04:00
Matthew Chen a7546aee63 Modify read receipt photos to support sending read receipts to both linked devices and senders.
// FREEBIE
2017-09-19 17:30:48 -04:00
Matthew Chen 39a961e376 Rework incoming read receipts handling.
// FREEBIE
2017-09-19 17:30:48 -04:00
Matthew Chen 737503549d Rework incoming read receipts handling.
// FREEBIE
2017-09-19 17:30:48 -04:00
Matthew Chen 2b1ea19960 Modify read receipt photos to support sending read receipts to both linked devices and senders.
// FREEBIE
2017-09-19 17:30:48 -04:00
Matthew Chen 0e7eaf7c62 Modify read receipt photos to support sending read receipts to both linked devices and senders.
// FREEBIE
2017-09-19 17:30:48 -04:00
Matthew Chen a5ece18e6c Fix build break.
// FREEBIE
2017-09-19 09:35:33 -04:00
Matthew Chen 400f536e37 Respond to CR.
// FREEBIE
2017-09-19 09:30:01 -04:00
Matthew Chen 872ce17dd6 Clean up data source temp files when complete.
// FREEBIE
2017-09-19 09:30:01 -04:00
Matthew Chen 05b1818874 Don't "scroll to bottom" when messages are sent from desktop.
// FREEBIE
2017-09-18 15:49:33 -04:00
Matthew Chen d3ad0950ba Clean up the data source class.
// FREEBIE
2017-09-11 10:20:48 -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 0746b1300d Apply DataSource to message sender.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen b95b5f69de Apply DataSource to message sender.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen 20e5013aae Convert DataSource to Objective-C.
// 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
Michael Kirk 2eaaba9082 crashfix: on addObject, presumably it's nil.
I'm not sure how this is happening, but this will prevent the crash and
give us additional diagnostic data in the cases where it is happening.

// FREEBIE
2017-09-01 12:56:50 -04:00
Matthew Chen bb1681f965 Respond to CR.
// FREEBIE
2017-08-30 12:53:02 -04:00
Matthew Chen cc048b3971 Respond to CR.
// FREEBIE
2017-08-30 12:46:21 -04:00
Matthew Chen d032339472 Modify debug builds to use production service.
// FREEBIE
2017-08-30 10:49:49 -04:00
Michael Kirk 01d0117f9b provisioning cipher: Fix memory leak, handle failure
Explicitly malloc'd buffer should either be explicitly free'd or
ownership given to NSData via `freeWhenDone:YES`

Instead I opted to avoid the explict malloc altogether, and avoided some
unnecessary allocations.

Also made sure encryption failures propogate to error handler

// FREEBIE
2017-08-30 09:47:29 -04:00
Michael Kirk 1f7b6f61c6 Regression test for provisioning cipher
// FREEBIE
2017-08-30 09:47:29 -04:00
Michael Kirk bdb75fa596 infer when group has been whitelisted on linked device
// FREEBIE
2017-08-29 17:09:28 -04:00
Matthew Chen b00db33d12 Don't ignore attachments.
// FREEBIE
2017-08-29 16:35:52 -04:00
Michael Kirk 3ffb321e2a fix assert
// FREEBIE
2017-08-29 12:02:24 -04:00
Michael Kirk d71b7684a6 cleanup logging
// FREEBIE
2017-08-29 10:46:10 -04:00
Michael Kirk ec0cf36abb Don't print empty bubbles.
e.g. if we add another "invisible" flag message in the future we want to
be able to roll it out immediately.

// FREEBIE
2017-08-29 10:39:36 -04:00
Michael Kirk 69e8ca8eac Handle receiving profile key messages
(don't print empty bubble)

// FREEBIE
2017-08-29 10:35:54 -04:00
Michael Kirk 9c56660618 profile key flag and debug action
// FREEBIE
2017-08-29 10:35:54 -04:00
Michael Kirk 0feb966a1c comment cleanup / code formatting
// FREEBIE
2017-08-29 10:35:18 -04:00
Michael Kirk 6cde79c568 Assert profile key length on sending/receiving
// FREEBIE
2017-08-29 10:35:18 -04:00
Michael Kirk 6235e7fe5c Don't send profile key with every sync message since we explicitly sync
upon update/create.

Following Signal-Android's lead here.

// FREEBIE
2017-08-29 10:35:18 -04:00
Michael Kirk 526d5e33b9 Sync profile key to sibling devices when updating contact
// FREEBIE
2017-08-29 10:35:18 -04:00
Michael Kirk 46919e4702 Add own profile key to multidevice provisioning message
// FREEBIE
2017-08-29 10:35:18 -04:00
Michael Kirk 1f3d2d1ed6 Send any profile key in contact sync
// FREEBIE
2017-08-29 10:35:18 -04:00
Michael Kirk f0a57edde0 proto update: multiDevice profileKey sync
Also:

- minimize diff between Signal-Android's protos
- comment whereever we diverge from Signal-Android

// FREEBIE
2017-08-29 10:35:18 -04:00
Michael Kirk 1e51bf4899 extract event names
// FREEBIE
2017-08-25 17:19:31 -04:00
Michael Kirk 251e206b6d profiles vs. censorship circumvention
// FREEBIE
2017-08-25 17:17:43 -04:00
Michael Kirk bde40a1f9c Ensure avatar upates right after profile change.
// FREEBIE
2017-08-25 12:40:19 -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 97f74ca5b4 Only use staging service in debug builds.
// FREEBIE
2017-08-22 17:19:44 -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
Michael Kirk 0ab958f03a cleanup per codereview
- reference OWS OpenSSL
- clarify comments
- fix typo

// FREEBIE
2017-08-21 16:37:16 -04:00
Michael Kirk 0f9f26a577 handle remote user's profile key has changed
// FREEBIE
2017-08-21 16:37:16 -04:00
Michael Kirk 72fbb02028 aes-gcm via openssl
// FREEBIE
2017-08-21 16:37:16 -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 97afa4d48a verification on decrypt
// FREEBIE
2017-08-15 15:19:40 -04:00
Michael Kirk 135243e383 CR: variable rename, better comments, fix up tests
// FREEBIE
2017-08-14 15:18:12 -04:00
Michael Kirk 7499b3aaf0 Avatar API integration / WIP crypto scheme
Crypto Scheme:

- Name (un)padding
- WIP AES-GCM (funtioning, but need to verify against android
  implementation, and tag functionality)

Changes to avatar API:

- hard code avatar domain (cdn.signal.org)
- avatar form hands out new avatar key, invalidating old avatar
- preliminary aes-gcm integration

Also:

- New type to represent AES128 keys, rather than passing around opaque
  data blobs everywhere, we can use the compiler to help us make sure
  we're passing compliant keying material.

- Started using factory pattern for API requests. This is intended to be
  a lighter weight way to implement new API requests, rather than the
  current 1-method class ceremony.

// FREEBIE
2017-08-14 12:45:37 -04:00
Michael Kirk fc3f9ae396 Replace server sent avatar URL with hardcoded
// FREEBIE
2017-08-11 11:19:05 -04:00
Michael Kirk 9fdc3202af White listing must happen on main thread
followup to: ee613e4889

Again, this solves a crash, but we'll want to revisit the perf
implications.

// FREEBIE
2017-08-11 09:11:55 -04:00
Michael Kirk 40b99a15ed Fix up some tests
Included plausible test implementation for an in-memory profile manager.

Note two tests remain failing (they've been failing for a while)

// FREEBIE
2017-08-09 12:17:03 -04:00
Michael Kirk a3ae22c84f Upload profile avatar to service
WIP, this currently lacks crypto pending further discussion.

// FREEBIE
2017-08-09 11:44:34 -04:00
Michael Kirk 45a1f534ba Rename method to make way for new method.
No behavioral changes.

// FREEBIE
2017-08-08 15:03:48 -04:00
Michael Kirk 72b3f3779b Discard GroupInfoRequest from unknown group
// FREEBIE
2017-08-08 12:17:26 -04:00
Michael Kirk ee613e4889 Can only set whitelist on main thread
As written solves a crash, but we'll probalby want to revisit the perf
implications.

// FREEBIE
2017-08-07 16:48:12 -04:00
Michael Kirk e07ed50170 define avatar form URL
// FREEBIE
2017-08-07 15:17:34 -04:00
Matthew Chen e01fbc247e Refine profile logic.
// FREEBIE
2017-08-04 17:35:22 -04:00
Matthew Chen 21304c18a6 Once we've shared our profile key with a user (perhaps due to being a member of a whitelisted group), make sure they're whitelisted.
// FREEBIE
2017-08-04 17:34:27 -04:00
Matthew Chen 98def41782 Respond to CR.
// FREEBIE
2017-08-04 17:33:16 -04:00
Matthew Chen 823927685d Update profile on service.
// FREEBIE
2017-08-04 15:25:17 -04:00
Matthew Chen 83e2fbe28c Rework where profile key is attached in photos.
// FREEBIE
2017-08-04 15:23:17 -04:00
Matthew Chen b5fdc05b91 Move profile key to data, call, sync and null protos.
// FREEBIE
2017-08-04 15:23:02 -04:00
Matthew Chen 37ce388eb6 Add “add to profile whitelist” offer.
// FREEBIE
2017-08-04 15:23:02 -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
Michael Kirk f99d4e9df9 Merge branch 'hotfix/2.15.2' 2017-08-04 13:11:53 -04:00
Michael Kirk 3856f3dfb1 Improve asserts/logging
// FREEBIE
2017-08-04 12:14:43 -04:00
Michael Kirk 52bd682565 fix some recently broken tests
// FREEBIE
2017-08-04 11:33:51 -04:00
Matthew Chen 6ec756de44 Move profile manager to Signal.
// FREEBIE
2017-08-04 09:45:33 -04:00
Matthew Chen 540a0a8e48 Refine UserProfile class. Move local user properties to UserProfile.
// FREEBIE
2017-08-04 09:45:33 -04:00
Michael Kirk 935b51aa19 Fixup tests
// FREEBIE
2017-08-03 13:27:09 -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 9c5934359e Don’t dismiss call view controller to present other view.
// FREEBIE
2017-08-03 10:41:16 -04:00
Matthew Chen 791e270578 Terminate call if call view presentation is delayed.
// FREEBIE
2017-08-03 10:29:40 -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 c603a2651d Rework how user profiles are updated and persisted. Persist other user’s profiles. Load and cache other user’s profile avatars.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen d7f275ce73 Add accessor for other users’ profile names.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen 4a54f1a99c DRY up and refine the logic to attach the local profile key to outgoing messages.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen aa6312b586 DRY up and refine the logic to attach the local profile key to outgoing messages.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen 1c1e173c58 Add support for adding groups to the profile whitelist.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen 26b668cce7 Add profile key to proto schema. Send and receive profile keys. Cache profile manager state.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen e58358ce53 Add profile key to content proto schema.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen 202724cdcc Persist profile whitelist and known profile keys.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen 2993ac002f Clean up database convenience methods and add assertions.
// FREEBIE
2017-08-02 10:47:42 -04:00
Matthew Chen a3b16812ec Add convenience category for YapDatabaseConnection.
// FREEBIE
2017-08-02 10:38:23 -04:00
Matthew Chen 4be706caf5 Add convenience category for YapDatabaseConnection.
// FREEBIE
2017-08-02 10:38:23 -04:00
Matthew Chen 7692a393c1 Add convenience category for YapDatabaseConnection.
// FREEBIE
2017-08-02 10:38:23 -04:00
Matthew Chen a748987d72 Add option to clear profile avatar.
// FREEBIE
2017-08-01 16:32:36 -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
Matthew Chen 0f3a3d1903 Sketch out profile upload.
// FREEBIE
2017-08-01 16:17:59 -04:00
Matthew Chen 0bd23345a1 Sketch out the profile view.
// FREEBIE
2017-08-01 16:17:59 -04:00
Matthew Chen 72ea096970 Sketch out the profile view.
// FREEBIE
2017-08-01 16:17:59 -04:00
Matthew Chen 63e20cd8bb Sketch out profile manager.
// FREEBIE
2017-08-01 11:41:55 -04:00
Michael Kirk 4bf407a24f fix some compiler warnings
// FREEBIE
2017-07-31 11:56:47 -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 0b38b46683 remove unnecessary dispatch
// 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
Michael Kirk 1066089980 Fix thread explosion
Without this, when the user has a large message queue to process, things
slow to a crawl as we spew more and more threads. Since it's on a serial
queue anyway, there's no need to have multiple threads executing this
code.

// FREEBIE
2017-07-28 17:12:47 -04:00
Matthew Chen bdb50552d3 Fix asserts in analytics macros.
// FREEBIE
2017-07-28 11:33:20 -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 8e628a6296 Hide empty conversations in home view.
// FREEBIE
2017-07-27 15:40:19 -04:00
Matthew Chen 103a7fab36 Hide empty conversations in home view.
// FREEBIE
2017-07-27 15:39:26 -04:00
Matthew Chen 07ee0db80c Merge branch 'charlesmchen/moreCallServiceAnalytics' 2017-07-27 13:57:41 -04:00
Matthew Chen dd13119f12 Add more instrumentation to CallService.
// FREEBIE
2017-07-27 13:57:29 -04:00
Matthew Chen e16d0e326b Avoid crash when deleting threads - and improve perf.
// FREEBIE
2017-07-27 13:02:42 -04:00
Matthew Chen e5c0fa89d6 Respond to CR.
// FREEBIE
2017-07-27 12:48:46 -04:00
Matthew Chen 465711c2cb Add script to extract and gather analytics event names.
// FREEBIE
2017-07-27 12:45:29 -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 0cf9c01af2 Add script to extract and gather analytics event names.
// FREEBIE
2017-07-27 12:27:48 -04:00
Matthew Chen 8aff95c44e Add script to extract and gather analytics event names.
// FREEBIE
2017-07-27 12:26:02 -04:00
Matthew Chen b4f348ad14 Add script to extract and gather analytics event names.
// FREEBIE
2017-07-27 12:26:02 -04:00
Matthew Chen 31ab9a00da Add script to extract and gather analytics event names.
// FREEBIE
2017-07-27 12:26:02 -04:00
Michael Kirk 91ad2ec32b Properly handle too-large messages
1. Take note of any large messages.
2. If they are way too large, we just drop them on the floor.

// FREEBIE
2017-07-27 11:37:10 -04:00
Matthew Chen 531489a828 Streamline analytics properties.
// FREEBIE
2017-07-27 10:16:16 -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
Michael Kirk 3f4dcecf15 ensure blocking keychange message has identityKey before proceeding
This is increasingly irrelevant due to recent safety number changes, but
legacy clients with old messages can still run into this.

FIXES: https://github.com/WhisperSystems/Signal-iOS/issues/2346

// FREEBIE
2017-07-26 16:00:32 -04:00
Michael Kirk eafc370bbe CR: move property to method to clearly avoid Mantle serialization
Also some formatting cleanup and extra asserts

// FREEBIE
2017-07-26 14:29:56 -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 d72c4a21c3 Fix missing variable type.
// FREEBIE
2017-07-26 11:58:41 -04:00
Matthew Chen 863fd27abe Respond to CR.
// FREEBIE
2017-07-26 10:52:15 -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 958a8b4c80 Instrument CallService.
// FREEBIE
2017-07-26 10:01:43 -04:00
Matthew Chen ef4b1cf477 Respond to CR.
// FREEBIE
2017-07-24 17:18:15 -04:00
Matthew Chen fa7a2407bf Respond to CR.
// FREEBIE
2017-07-24 16:20:00 -04:00
Matthew Chen b17a7c5751 Review NSError usage.
// FREEBIE
2017-07-24 16:13:59 -04:00
Matthew Chen 11f52757b2 Use background task when sending analytics events.
// FREEBIE
2017-07-24 16:13:59 -04:00
Matthew Chen 543c05b2c5 Add a “critical” severity level for analytics events.
// FREEBIE
2017-07-24 16:13:59 -04:00
Matthew Chen 2418baec15 Respond to CR.
// FREEBIE
2017-07-24 16:13:22 -04:00
Matthew Chen 9587aab37b Instrument network errors.
// FREEBIE
2017-07-24 16:05:39 -04:00
Matthew Chen 117bca7c48 Instrument errors in app delegate.
// FREEBIE
2017-07-24 16:05:39 -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
Matthew Chen e168db79aa Instrument errors in message manager.
// FREEBIE
2017-07-24 16:05:39 -04:00
Michael Kirk 6e19c1aae8 Don't crash when messaging user with malformed profile
// FREEBIE
2017-07-24 13:01:43 -04:00
Michael Kirk a5f067936c migration to fix any half-registered users
// FREEBIE
2017-07-24 13:01:43 -04:00
Michael Kirk 7c28805442 Don't consider yourself registered until you've uploaded your prekeys
// FREEBIE
2017-07-24 13:01:43 -04:00
Michael Kirk 6ef9d568fc Instructions, how to use SignalServiceKit
// FREEBIE
2017-07-21 16:21:49 -04:00
Matthew Chen 128c40a26c Respond to CR.
// FREEBIE
2017-07-21 15:32:26 -04:00
Matthew Chen c8b2e22a3b [SSK] Migrating changes from obsolete SSK repo.
// FREEBIE
2017-07-21 15:22:28 -04:00
Matthew Chen 4059c34170 [SSK] Migrating changes from obsolete SSK repo.
// FREEBIE
2017-07-21 15:17:35 -04:00