Commit graph

519 commits

Author SHA1 Message Date
Michael Kirk
fa82d43e6c put custom image picker behind feature flag 2018-11-12 14:32:43 -06:00
Matthew Chen
3daf7d4744 Add OWSAttachmentDownloads. 2018-11-08 15:31:00 -05:00
Michael Kirk
42bf267607 fixup plumbing for incoming messages/synced transcripts 2018-11-08 12:52:09 -06:00
Michael Kirk
57681bd6f3 Gallery supports album messages 2018-11-08 12:52:09 -06:00
Matthew Chen
9a44f24bc1 Reduce typing indicators. 2018-11-07 14:31:47 -05:00
Michael Kirk
3ff3779f17 CR: remove unnecessary assert 2018-11-07 10:12:50 -06:00
Michael Kirk
7cef41f8e2 Multi-approval 2018-11-07 10:09:21 -06: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
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
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
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
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
Michael Kirk
d6d6c4fca4 ConversationVC - lastSeenSortId 2018-09-26 09:52:33 -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
00d0d1e002 Remove legacy Error backdating - no changes in functionality
Historically we would backdate the SN change messages, but since adopting
non-blocking SN changes long ago, they're already sorted properly by creation
time, so backdating has been unnecessary for a while.

I also audited that all other error messages are saved directly after creation.

I applied deprecation attributes as appropriate as I audited.
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
29bb69032a DRY up the debounce of db extension version increment. 2018-09-20 08:55:19 -04:00
Matthew Chen
e1db60c1c0 Rework creation of singletons. 2018-09-19 15:11:26 -04:00
Michael Kirk
920a82564f Merge tag '2.29.3.3' 2018-09-15 09:17:08 -05:00
Michael Kirk
2eca462efc can view conversation settings for left group 2018-09-12 19:16:14 -05:00
Michael Kirk
b1da5e93d9 group blocking v. conversation view 2018-09-12 19:16:14 -05:00
Michael Kirk
eadb04efcc WIP: ContactViewHelper incorporates group blocking
-[ ] UI
  -[ ] Conversation Settings
    -[x] Show switch for group
    -[ ] localize
    -[ ] migrate existing localizations? (nice to have)
    -[ ] can view conversation settings (but not edit them) in left group
    -[ ] special block copy for groups
    -[ ] special unblock copy for groups
  -[ ] ConversationViewHelper
   -[x] Track blocked groups
   -[ ] HomeView
   -[ ] ConversationView
   -[ ] Any others?
   -[ ] Rename? Extract BlockList cache?
  -[ ] Block List
    -[ ] Group Section
    -[ ] Unblock group
  -[ ] Interstitial interacting with blocked threads (e.g. thread picker)
    -[ ] BlockListUIUtils w/ thread
        -[x] Block
        -[x] Unblock
        -[ ] Replace usages where possible
        -[x] block manager
-[ ] Sync
  -[x] tentative protos
  -[ ] confirm protos w/ team
  -[x] send new protos
-[ ] Message Processing
  -[ ] Drop messages from blocked groups
2018-09-12 19:16:14 -05:00
Matthew Chen
df7acfeed3 Simplify OWSPreferences access. 2018-09-07 16:28:21 -04:00
Matthew Chen
3a12446be8 Modify environment accessors to use our 'shared' convention. 2018-09-07 16:20:41 -04:00