Commit graph

293 commits

Author SHA1 Message Date
Michael Kirk
d35b735d76 Log message type in message sender 2018-10-25 11:54:59 -06:00
Michael Kirk
3560f3be5c Durable send operation
TODO
-[x] respect order of queue
-[x] replacements
  -[x] those w/o completion handler
  -[x] basic send+log operation persists
  -[x] send+ui completion
  -[x] share extension
  -[x] update state jobs
-[x] App Lifecyle
  -[x] settable
  -[x] Mark as ready on startup
  -[x] Fail appropriate jobs on startup

NICE TO HAVE
-[x] concurrent per senders
-[ ] longer retry (e.g. 24hrs)
-[ ] App Lifecyle
  -[x] retry failed jobs on startup?
  -[ ] reachability

DONE
-[x] basic passing test
-[x] datamodel
-[x] queue/classes
2018-10-25 11:54:59 -06:00
Matthew Chen
9df94b8477 Rework sync transcript sending. 2018-10-24 10:53:23 -04:00
Matthew Chen
21cf467bb4 Don't use websocket after 409/410. 2018-10-23 15:09:22 -04:00
Matthew Chen
b003049d9c Improve UD logging. 2018-10-22 14:29:08 -04:00
Matthew Chen
8c8b3a95b8 Respond to CR. 2018-10-22 14:04:30 -04:00
Matthew Chen
d656ae1017 Fix edge cases around UD v. linked devices. 2018-10-22 12:31:28 -04:00
Matthew Chen
86e22edcb1 Send "sent message transcript" sync messages at the _end_ of a send, not after the first recipient is sent. 2018-10-19 17:22:28 -04:00
Matthew Chen
55369a1ca3 Only send 'sent message transcript' sync messages using UD. 2018-10-19 16:45:50 -04:00
Matthew Chen
94c7b72361 Only send "sent message transcript" sync messages using UD. 2018-10-19 16:45:50 -04:00
Matthew Chen
2894db0d6e Add request maker. 2018-10-19 16:35:19 -04:00
Matthew Chen
ab6c4a4c36 Try prekey fetches via websocket. 2018-10-19 09:03:47 -04:00
Matthew Chen
d44e414b54 Clean up message sender. 2018-10-18 13:50:48 -04:00
Matthew Chen
353f91db64 Respond to CR. 2018-10-18 12:12:13 -04:00
Matthew Chen
9519e7961a Rework recipient device updates. 2018-10-18 11:21:16 -04:00
Matthew Chen
a00ebdf4a2 Fix UD auth edge cases. 2018-10-18 11:21:16 -04:00
Matthew Chen
4d89670f19 Fix UD auth edge cases. 2018-10-18 11:21:16 -04:00
Matthew Chen
f2a1df4e99 Update device message auditing to reflect UD behavior. 2018-10-11 13:00:53 -04:00
Matthew Chen
a6eed30127 Add 'is ud' property to outgoing messages. 2018-10-10 14:32:14 -04:00
Matthew Chen
0d588346f1 Fix rebase breakage. 2018-10-10 14:28:02 -04:00
Matthew Chen
a4cdc5272c Handle UD auth errors in websocket sends. 2018-10-10 14:22:41 -04:00
Michael Kirk
0be1f8cca2 Move UD auth into request initializers 2018-10-10 09:09:11 -06:00
Michael Kirk
39ba413439 Track UD mode enum instead of two booleans 2018-10-10 09:09:11 -06:00
Matthew Chen
75e59bbc6f Discard self-sent messages during the decryption process. 2018-10-10 09:10:45 -04:00
Matthew Chen
e47b69e0aa Send sync messages to self via UD (only); discard self-sent sync messages. 2018-10-10 09:10:45 -04:00
Matthew Chen
01ca416f42 Fix rebase breakage. 2018-10-05 12:53:54 -04:00
Matthew Chen
2f2b6b071b UD sends over web sockets; update web socket auth for UD. 2018-10-05 12:49:40 -04:00
Matthew Chen
3b06434d4f Split out second web socket. 2018-10-05 12:48:19 -04:00
Matthew Chen
c137e95ae5 Move socket manager to hang on SSKEnvironment. 2018-10-05 12:47:11 -04:00
Matthew Chen
fbfda5b9db Respond to CR. 2018-10-05 12:00:31 -04:00
Matthew Chen
1a23186ec4 Fix 'info message for group events'. 2018-10-05 11:50:17 -04:00
Matthew Chen
61a99c3f87 Further sender cleanup. 2018-10-05 11:49:36 -04:00
Matthew Chen
f2a9c10c20 Respond to CR. 2018-10-05 10:41:10 -04:00
Matthew Chen
a697072271 Respond to CR. 2018-10-05 10:32:32 -04:00
Matthew Chen
ccb67f49a3 Fix issues in UD send & receive. 2018-10-04 11:56:37 -04:00
Matthew Chen
0b41e5e240 Rework profile fetch to reflect UD changes. 2018-10-04 11:56:37 -04:00
Matthew Chen
1e10a86635 UD send via REST. 2018-10-04 11:56:36 -04:00
Matthew Chen
24b0eed1f6 UD send via REST. 2018-10-04 11:56:36 -04:00
Matthew Chen
d08479980d UD send via REST. 2018-10-04 11:56:36 -04:00
Matthew Chen
71da312336 Post-SMK ud changes. 2018-10-02 13:19:41 -04:00
Matthew Chen
0125535d4d Pull out SignalCoreKit. 2018-10-01 09:06:40 -04:00
Matthew Chen
ebae75af00 Revert 'new sort id'. 2018-09-27 19:40:51 -04:00
Michael Kirk
6bfd0f29ed mark self-sent messages as read as soon as it was created 2018-09-26 09:52:34 -06:00
Michael Kirk
ab55e85304 step 1: timestampForSorting audit, change signature
No change in functionality in this commit, I just broke the signature to have a
systematic audit of the callsites. Added TODO's with the plan for each call.
2018-09-26 09:52:33 -06:00
Michael Kirk
df61316495 minimize diff senderTimestamp -> timestamp 2018-09-26 09:52:33 -06:00
Michael Kirk
eef1368ad3 Timestamp audit step1: change signature
There is no change in functionality in this commit.

Apart from clarifying what the timestamp means (it's the timestamp of the
*sender*), this intentionally breaks all the call sites, so I could have a sane
way to thoroughly audit wherever we're passing in timestamps, to see where
we're depending on them to affect sort order.

For the sake of a cleaner diff of meaningful changes, instead of "fixing"
everything in this commit, I've just added comments and renamed signatures.
2018-09-26 09:52:33 -06:00
Matthew Chen
87836f506b Move more singletons to SSKEnvironment. 2018-09-21 09:06:48 -04:00
Matthew Chen
edcedd2845 Remove selfRecipient method. 2018-09-19 15:11:26 -04:00
Matthew Chen
e1db60c1c0 Rework creation of singletons. 2018-09-19 15:11:26 -04:00
Michael Kirk
1853e79c3e Don't retry send until SPK has been rotated
// FREEBIE
2018-09-17 10:10:32 -06:00
Michael Kirk
3df0e72eda Extract SPK rotation and CreatePreKey operations 2018-09-17 10:10:32 -06:00
Matthew Chen
9b94580dae Update assertions.
* Streamline precompiled headers.
* Remove obsolete assertions in Constraints.h.
2018-09-14 14:30:06 -04:00
Matthew Chen
e15b8ebe16 Add names to operation queues. 2018-09-14 14:24:37 -04:00
Michael Kirk
c7662b5a86 Step 2/2 %s/OWSAssert/OWSAssertDebug for existing previous assert semantics
Going forward, we want to prefer safer asserts, but we don't want to blindly
apply crashing asserts across the codebase
2018-09-07 10:00:48 -06:00
Matthew Chen
fac7f6932f Rename TSGroupMetaMessage enum values. 2018-09-04 09:30:01 -04:00
Matthew Chen
f473f60111 Apply OWS log functions in Objective-C. 2018-08-27 12:58:52 -04:00
Matthew Chen
cc5a480baa Apply OWS log functions in Objective-C. 2018-08-27 12:58:52 -04:00
Matthew Chen
3a50377902 Apply OWS log functions in Objective-C. 2018-08-27 12:58:52 -04:00
Matthew Chen
713606271c Rename fail macros in Obj-C. 2018-08-27 10:29:51 -04:00
Michael Kirk
c05700fd98 Log in OWSFail
step 1: rename OWSFail->OWSFailNoProdLog
step 2: rename OWSProdLogAndFail->OWSFail
step 3: Convert OWSFailNoProdLog->OWSFail where we want logging
step 4: Rename OWSCFail->OWSCFailNoProdLog
step 5: Rename OWSProdLogAndCFail -> OWSCFail
step 6: Convert OWSCFailNoProdLog -> OWSCFail where we want logging
2018-08-09 15:30:19 -06:00
Matthew Chen
ab31e5a07f Code generate Swift wrappers for protocol buffers. 2018-08-03 14:05:20 -04:00
Matthew Chen
b0a516c36f Refine recipient device updates. 2018-07-26 09:22:40 -04:00
Matthew Chen
0518b335d8 Refine recipient device updates. 2018-07-26 09:22:40 -04:00
Matthew Chen
baed561033 Mark message sent to self as read. 2018-07-23 13:27:10 -04:00
Matthew Chen
88be3a5755 Respond to CR. 2018-07-23 13:25:21 -04:00
Matthew Chen
819c2b1ceb Remove Twisted Oak. 2018-07-23 13:24:33 -04:00
Michael Kirk
b7288b2565 Move contact intersection into batched operation
// FREEBIE
2018-07-19 13:40:30 -06:00
Matthew Chen
094cf3691d Respond to CR. 2018-07-18 13:57:22 -04:00
Matthew Chen
cc91cb3dbf Respond to CR. 2018-07-18 13:57:22 -04:00
Matthew Chen
ace07ac62a Respond to CR. 2018-07-18 13:57:22 -04:00
Matthew Chen
77884913d8 Streamline SignalRecipient. 2018-07-18 13:57:22 -04:00
Matthew Chen
b6489c6948 Streamline SignalRecipient. 2018-07-18 13:57:22 -04:00
Matthew Chen
05a4222b2d Streamline SignalRecipient. 2018-07-18 13:57:22 -04:00
Matthew Chen
ef3933bfaa Streamline SignalRecipient. 2018-07-18 13:57:21 -04:00
Matthew Chen
9618fc16c5 Streamline SignalRecipient. 2018-07-18 13:57:21 -04:00
Matthew Chen
ebe87348a2 Streamline SignalRecipient. 2018-07-18 13:57:21 -04:00
Matthew Chen
d14f764b50 Streamline SignalRecipient. 2018-07-18 13:57:21 -04:00
Matthew Chen
3f4cd15f5b Use sending queue in websocket send failover to REST. 2018-07-05 09:57:28 -04:00
Michael Kirk
1e8c7d63b8 clarify sync logging 2018-07-03 15:39:31 -06:00
Michael Kirk
8576de0618 Fix: No contacts/groups after initial device link
The server caches your device list on the websocket, so sending on the
websocket to a just-linked device will always fail. We could close/open the
websocket, but that might be disruptive in it's own way. Instead we'll closely
mirror the Android approach, where WebSocket sends are attempted only one time,
and failure is handled by falling back to the original REST approach.

So note: we don't do any special handling of failures on the websocket
(409/410). We simply retry it with REST which will handle the 409/410/etc.

Consequently, we don't want to decrement our retry count for websocket sends.
2018-07-03 15:31:25 -06:00
Michael Kirk
c48f2404a3 Fix overzealous assert
// FREEBIE
2018-06-15 10:28:07 -04:00
Matthew Chen
f9f931fc2d Fix assert around failing sync message sends. 2018-06-14 15:07:09 -04:00
Matthew Chen
61ec865b6d Respond to CR. 2018-05-30 15:41:01 -04:00
Matthew Chen
4342b04bd3 Include response data in 'request over websocket' failures. 2018-05-30 15:37:59 -04:00
Matthew Chen
4d498563e7 Unify the socket manager's 'can send requests' logic. 2018-05-30 12:48:32 -04:00
Matthew Chen
21b54bee4f Fix breakage from recents changes in share extension. 2018-05-29 10:45:58 -04:00
Matthew Chen
8a76e778b5 Use websocket for sends. 2018-05-22 14:24:04 -04:00
Matthew Chen
5f1682deab Use websocket for sends. 2018-05-22 14:24:04 -04:00
Matthew Chen
5c7b98e5c4 Improve handling of unregistered users. 2018-05-14 16:45:06 -04:00
Matthew Chen
8489c55fde Mark send-to-self as sent. 2018-05-14 14:41:45 -04:00
Matthew Chen
9c2f619132 Don't echo messages sent to self 1:1. 2018-05-14 10:56:47 -04:00
Michael Kirk
77fc5571fb Implement avatar sending
// FREEBIE
2018-05-07 12:08:41 -04:00
Michael Kirk
48b4791b13 Download avatar attachment stream
// FREEBIE
2018-05-07 12:08:41 -04:00
Matthew Chen
e7eaa7945d Handle completely skipped message sends. 2018-05-07 09:58:40 -04:00
Matthew Chen
0316a98eb8 Undo renaming of contactShare property of TSMessage. 2018-05-01 11:26:01 -04:00
Matthew Chen
0d8cfc5403 Rename contact share class to contact. 2018-05-01 11:03:25 -04:00
Matthew Chen
4b8a2fa8a3 Sketch out "contact share" model. 2018-05-01 11:03:25 -04:00
Matthew Chen
bb96454070 More outgoing message fixes. 2018-04-30 11:00:57 -04:00
Matthew Chen
752bca313c Fix glitches in outgoing messages. 2018-04-27 16:37:09 -04:00
Matthew Chen
f16e9a2920 Fix issues in outgoing messages status changes. 2018-04-26 14:17:41 -04:00
Matthew Chen
5c6f9ec088 Fix issues in outgoing messages status changes. 2018-04-26 14:12:34 -04:00
Matthew Chen
4de4a4b229 Respond to CR. 2018-04-25 10:49:19 -04:00
Matthew Chen
40ac0daa9a Respond to CR. 2018-04-25 10:49:19 -04:00
Matthew Chen
9e6062f21c Rework outgoing message state. 2018-04-25 10:49:19 -04:00
Matthew Chen
9275c67818 Rework outgoing message state. 2018-04-25 10:49:19 -04:00
Michael Kirk
754549adf1 Start timer for expiring message based on when read receipt was sent
// FREEBIE
2018-04-18 15:32:01 -04:00
Michael Kirk
dfb2a034af Use explicit transactions.
- Start expiration within scope of existing transaction when we're
  already in a transaction

// FREEBIE
2018-04-18 15:32:01 -04:00
Matthew Chen
829cfd0428 Reduce oversize text size. 2018-04-11 17:57:53 -04:00
Michael Kirk
02efbd3069 Fix blip where thumbnail is initially missing from outgoing message
// FREEBIE
2018-04-09 12:47:57 -04:00
Michael Kirk
4399967e99 Comment cleanup, remove unnecessary includes
// FREEBIE
2018-04-09 12:47:56 -04:00
Michael Kirk
fa2e1ba89b Fetch thumbnail when not available locally
// FREEBIE
2018-04-09 12:47:56 -04:00
Michael Kirk
42f454b075 Generate thumbnail when quoted attachment is available locally
// FREEBIE
2018-04-09 12:47:56 -04:00
Michael Kirk
cb5d3d4f85 Use QuotedReplyModel to access attachment data
This view model loads the attachment when it's build.

// FREEBIE
2018-04-09 12:47:56 -04:00
Michael Kirk
253435b27f extract QuotedReplyDraft model 2018-04-09 12:47:56 -04:00
Michael Kirk
0b8b3b4f16 WIP: towards avatar attachment streams
// FREEBIE
2018-04-09 12:47:56 -04:00
Michael Kirk
53af41fcc6 Reusable UploadOperation based on extracted OWSOperation
// FREEBIE
2018-04-09 12:47:56 -04:00
Matthew Chen
8e4f2ca0ed Rework proto schema changes for quoted replies.
Sketch out model changes for quoted replies.

Sketch out quoted reply input preview.

Send quoted messages protos.

Update models to reflect quoted messages.

Rework interaction initializers.

Rework interaction initializers.

Add debug UI methods for generating quoted reply variations.

Add debug UI methods for generating quoted reply variations.
2018-04-02 16:17:46 -04:00
Matthew Chen
b067d81017 Don't log message send errors. 2018-03-22 15:47:57 -04:00
Matthew Chen
d6f4db1523 Rename TSStorageManager to OWSPrimaryStorage. 2018-03-06 17:12:13 -03:00
Matthew Chen
2395dbf66b Fix redundant sync sends. 2018-03-02 15:05:14 -05:00
Matthew Chen
c2f092018c Elaborate request factory. 2018-03-02 15:05:14 -05:00
Matthew Chen
004479a2ce Elaborate request factory. 2018-03-02 15:05:14 -05:00
Matthew Chen
b9458fffef Respond to CR. 2018-03-02 10:53:22 -05:00
Matthew Chen
dcf7f550ae Fix redundant sync sends. 2018-03-01 23:37:03 -05:00
Matthew Chen
b07f466e08 Fix redundant sync sends. 2018-03-01 23:34:31 -05:00
Matthew Chen
8576da791c Improve handling of attachments with captions. 2018-02-22 16:03:00 -05:00
Matthew Chen
96b5f22799 Improve handling of attachments with captions. 2018-02-22 16:03:00 -05:00
Matthew Chen
81522e4a23 Respond to CR. 2018-02-14 10:38:08 -05:00
Matthew Chen
01496b2db8 Avoid deadlocks in message sender. 2018-02-14 10:38:08 -05:00
Michael Kirk
ea12ed4c23 Fix dynamic type check which was too restrictive
// FREEBIE
2018-02-13 15:54:23 -08: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
51cec20c50 Clean up ahead of PR. 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
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
Matthew Chen
992e926142 Unpack oversize text messages if possible. 2018-01-25 13:26:10 -05:00
Matthew Chen
0cc7f3e00e Clean up ahead of PR. 2018-01-25 11:00:38 -05:00
Matthew Chen
d81d85c386 Respond to CR. 2018-01-12 10:36:09 -05:00
sdkjfhsdkjhfsdlkjhfsdf
6e2d9c8141 identity change vs. share extension
// FREEBIE
2018-01-02 11:24:36 -06:00
Matthew Chen
f9ce34f553 Improve background task logic. 2017-12-19 11:05:17 -05:00
Matthew Chen
df8ded90b8 Use background task during attachment downloads. 2017-12-19 11:05:17 -05:00
Michael Kirk
3eceb86371 Show alert if we fail to build the attachment
// FREEBIE
2017-12-07 10:14:30 -05:00
Michael Kirk
a58f1f385c Share a photo from photos app
Shows the conversation picker, and sends the attachment to that
conversation.

There's still a lot TODO

-[ ] resolve JSQ dependency
-[ ] properly wait for app to load
-[ ] dismiss share extension after send is complete
-[ ] support non jpeg file types
-[ ] Fix device sleep manager

// FREEBIE
2017-12-07 10:13:06 -05:00
Michael Kirk
0138777343 New @available syntax avoids compiler warnings
// FREEBIE
2017-12-04 12:50:28 -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
Michael Kirk
336aa13520 Avoid overzealous assert
// FREEBIE
2017-11-29 14:57:04 -08:00
Michael Kirk
e9796600c6 disable some asserts for now
// FREEBIE
2017-11-29 13:58:27 -08:00