Commit Graph

1082 Commits

Author SHA1 Message Date
Matthew Chen ec6de40bd9 Modify MessageBubbleView to support media galleries. 2018-11-06 15:23:09 -05:00
Matthew Chen 0341f5dc2b Modify ConversationViewItem to support media galleries. 2018-11-06 15:23:09 -05:00
Matthew Chen f2c0985907 Add 'is valid media?' method. 2018-11-06 15:23:09 -05:00
Michael Kirk 4c5d46e8f8 Custom photo picker, respects theme/call banner
- share GridViewCell
- Multiple image selection, with feature flag, cant currently approve multiple
2018-11-05 22:23:40 -06:00
Matthew Chen 2ca32fddcc Preserve ordering in incremental diffs. 2018-11-05 16:53:39 -05:00
Matthew Chen aa5e6b456e Preserve ordering in incremental diffs. 2018-11-05 16:53:39 -05:00
Matthew Chen af249de681 Fix race in CVM startup. 2018-11-05 09:02:05 -05:00
Matthew Chen 47fda2e377 Add debug UI for multi-image sends. 2018-11-02 13:04:05 -04:00
Matthew Chen ecba67b511 Add debug UI for multi-image sends. 2018-11-02 13:04:05 -04:00
Matthew Chen 22c922bf5b Respond to CR. 2018-11-01 16:44:47 -04:00
Matthew Chen 650469c6a7 Respond to CR. 2018-11-01 16:44:47 -04:00
Matthew Chen 4088bebe05 Clean up ahead of PR. 2018-11-01 16:44:47 -04:00
Matthew Chen 94eaed0024 Fix rebase breakage. 2018-11-01 16:44:47 -04:00
Matthew Chen 37ae4ef360 Add typing indicator animation. 2018-11-01 16:44:47 -04:00
Matthew Chen 63d88ef5cb Sketch out TypingIndicatorCell. 2018-11-01 16:44:47 -04:00
Matthew Chen eedc9f9a26 Sketch out "typing indicators" interaction and cell. 2018-11-01 16:44:47 -04:00
Michael Kirk 77bd9b8852 Extract most Gallery functionality from the gallery NavigationController.
By not overriding the initializer for an OWSNavigationController subclass,
we can use the dynamic disaptch intialization chain.

The root difficulty here is that super.init(navBarClass:) wants to call
self.init(nibNam)
2018-11-01 12:53:59 -06:00
Matthew Chen 834bba8880 Respond to CR. 2018-11-01 14:51:47 -04:00
Matthew Chen 32d3eed7ba Add ConversationViewModel. 2018-11-01 14:51:47 -04:00
Matthew Chen 3d0e7386a4 Respond to CR. 2018-10-31 12:19:07 -04:00
Matthew Chen a98c82645c Start work on typing indicators.
* Update proto schema to reflect typing indicators.
* Sketch out OWSTypingIndicatorMessage.
* Add "online" to the service message params.
* Sketch out logic to send typing indicator messages.
* Sketch out OWSTypingIndicators class.
2018-10-31 12:11:29 -04:00
Matthew Chen 40aa78e001 Merge remote-tracking branch 'origin/release/2.31.0' 2018-10-31 11:42:41 -04:00
Michael Kirk 3d9cd4f4ed CR: comments and code clarity 2018-10-30 11:35:34 -06:00
Michael Kirk cb9aa6304c find -E . -type f -regex ".*\.(m|h)" -exec sed -i "" -e "s/try_/throws_/" {} \; 2018-10-30 11:35:34 -06:00
Michael Kirk 3a6aafc454 Swift Exception wrap NSData+keyVersionByte 2018-10-30 11:35:34 -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
Michael Kirk e20df022c8 always show footer for in-progress sending 2018-10-25 11:54:58 -06:00
Michael Kirk ce9ca1bdaa audio player type 2018-10-24 07:46:27 -06:00
Michael Kirk 3b4188f34b hoist audio session singleton to Environment 2018-10-24 07:46:25 -06:00
Michael Kirk 3d022adf4e WIP: audio activities 2018-10-24 07:44:50 -06:00
Matthew Chen 0b4ed1175d Create AppEnvironment. 2018-10-15 15:08:37 -04:00
Matthew Chen f1d93d4472 Merge remote-tracking branch 'origin/release/2.30.2' 2018-10-12 16:00:42 -04:00
Matthew Chen 0b41e5e240 Rework profile fetch to reflect UD changes. 2018-10-04 11:56:37 -04:00
Michael Kirk f243914fe5 NSTemporaryDirectory -> OWSTemporaryDirectory/AccessibleAfterFirstAuth
Remove redundant move - AFNetworking alread moves the CFNetwork tmp file for
us.
2018-10-03 14:01:36 -06:00
Michael Kirk 006021ea41 Fix: group color change doesn't immediately apply
Because we were fetching a new thread instance, instead of updating the
existing thread instance, classes which were bound to the old thread instance
weren't updating. This affected the HeaderView.AvatarView.thread and the
ConversationStyle.thread.
2018-10-01 17:06:09 -06:00
Matthew Chen 0125535d4d Pull out SignalCoreKit. 2018-10-01 09:06:40 -04:00
Michael Kirk 06eae47e09 ConversationViewItem -> protocol 2018-09-28 12:58:33 -06:00
Matthew Chen ebae75af00 Revert 'new sort id'. 2018-09-27 19:40:51 -04:00
Joshua Lund 97d0543cef String cleanup:
* Made our Title Case usage a little more consistent.
* Standardized on the ellipses special character.
* Rephrased a few buttons and descriptions.
2018-09-27 15:30:58 -04:00
Michael Kirk 79add78d51 Merge branch 'release/2.30.1' 2018-09-27 13:03:35 -06:00
Matthew Chen 1c1d305a71 Respond to CR. 2018-09-27 11:42:32 -04:00
Matthew Chen cbaf40d4ce Respond to CR. 2018-09-27 09:52:12 -04:00
Matthew Chen d161e5ff3d Add inner shadows to media thumbnails. 2018-09-27 09:42:29 -04:00
Matthew Chen b3ad6e27dc Rework conversation message bubble colors; add "conversation colors" class. 2018-09-27 09:07:47 -04:00
Matthew Chen 25d56b30c1 Rework group avatars to reflect conversation colors. 2018-09-27 08:55:20 -04:00
Michael Kirk c21020d7e7 Use received date for footer-collapse supression 2018-09-26 09:52:34 -06:00
Michael Kirk 6f8eddc955 unread indicator uses sortId
- removed timestamp parameter. This wasn't totally obvious, previously we were tracking two pieces of state

1. `unreadIndicator.firstUnseenTimestamp`:
    the first unseen timestamp for a conversation that exists in the database
2. `unreadIndicator.timestamp`:
    the timestamp of the first interaction *after* the unread indicator that fits in the loading window

We don't actually need to track `2` because it was only used in a comparison like:

   viewItem.interaction.timestampForSorting >= unreadIndicator.timestamp

But by definition, unreadIndicator.firstUnseenTimestamp is always less than or
equal to unreadIndicator.timestamp. Put into terms of the `sortId` corallary,
the sortId of the first unseen interaction in the database is always less than
or equal to the sortId of the first unseen interaction that fits in the loading
window.

In other words, there's no situation where

   viewItem.interaction.sortId >= unreadIndicator.firstUnseenSortId
2018-09-26 09:52:34 -06:00
Michael Kirk 3240e0d9d0 Be explicit about receivedAt time
We were often using `timestampForLegacySorting`, which is convoluted for when
we actually just want received time.

In some sense this is a superficial change, but it's part of auditing that
we've completed moved away from timestampForLegacySorting.
2018-09-26 09:52:34 -06:00
Michael Kirk b281b37637 replace thread.lastMessageDate/archivalDate -> thread.lastSortId, thread.archivedAsOfSortId
Update migration accordingly

Date shown on home view cell is message.receivedAt
2018-09-26 09:52:34 -06:00
Michael Kirk 90aa593dcd sortId vs. Read status 2018-09-26 09:52:33 -06:00