Commit Graph

485 Commits (8714a8f37c494f7af8bcfa530c5e63b8a28f7029)

Author SHA1 Message Date
Matthew Chen 9154cc46f0 Sketch out OWSVerificationManager.
// FREEBIE
9 years ago
Matthew Chen 69e40cdf1c Format fail messages.
// FREEBIE
9 years ago
Matthew Chen f63c85f5d5 Rework and unify the system messages.
// FREEBIE
9 years ago
Michael Kirk ab378f79b4 better message receipt logging
// FREEBIE
9 years ago
Matthew Chen 7c78d62a0d Remove obsolete TSUIDatabaseConnectionDidUpdateNotification notification.
// FREEBIE
9 years ago
Michael Kirk ebd4800e21 return unseen identity rather than bool
This turns out to be more versitile for the client app

// FREEBIE
9 years ago
Michael Kirk e10cc0c180 determine if recipient identity change is unseen
// FREEBIE
9 years ago
Matthew Chen cd7a172b94 Revert "Remove obsolete TSUIDatabaseConnectionDidUpdateNotification notification."
This reverts commit f2fb2cb9dc.

// FREEBIE
9 years ago
Matthew Chen f2fb2cb9dc Remove obsolete TSUIDatabaseConnectionDidUpdateNotification notification.
// FREEBIE
9 years ago
Michael Kirk 806a64ee53 Store session as Immutable to be clear about when it's mutated.
// FREEBIE
9 years ago
Michael Kirk 29e86901e7 Do not cache session objects
Ensure that any uncommitted session mutation doesn't hang around.

// FREEBIE
9 years ago
Matthew Chen 32d97bc6c7 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 09f7a9df4e Add incoming and outgoing message database views.
// FREEBIE
9 years ago
Matthew Chen 2b197197be Clean up timer usage.
// FREEBIE
9 years ago
Matthew Chen e889f49e3b Fix “mark as read” logic.
// FREEBIE
9 years ago
Matthew Chen a5bebaf862 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 0eff3625c9 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 31e216519a Respond to CR.
* Add [TSInteraction compareForSorting].
* Add a separate database view for safety number changes.

// FREEBIE
9 years ago
Matthew Chen 7c5a11b221 Changes for unseen indicator.
* Create separate database views for “unseen” and “unread” messages.
* Add “unseen tracking” to info and error messages.
* Rationalize “timestamp” vs. “receipt timestamp”.
* Ensure microsecond precision for interaction sorting.
* Add OWSFail() macros.

// FREEBIE
9 years ago
Matthew Chen 32d5e52142 DRY up the creation of database views.
// FREEBIE
9 years ago
Matthew Chen 6e94b3cccb Add a database view for dynamic interactions.
// FREEBIE
9 years ago
Matthew Chen 66927f206d Cache display names for accounts.
// FREEBIE
9 years ago
Michael Kirk 42b35bb897 Don't notify for some error messages
Specifically:

- Don't play alert when building block offer

- Don't play/show redundant alert/lockscreen notifications for id changes
  e.g.: if you share 100 groups with Bob, and Bob's SN change, you only
  need *one* notification, even though we display the message in 100
  group threads + 1 contact thread.

// FREEBIE
9 years ago
Michael Kirk 09d7d8c027 Given a recipient id, returns any unconfirmed identity
// FREEBIE
9 years ago
Michael Kirk 5df67c8e5c move constant per code review
// FREEBIE
9 years ago
Michael Kirk fe075d2f77 Support for profile fetching so we can display SN changes upon entering
a thread

// FREEBIE
9 years ago
Matthew Chen ef9303dd03 Rename audio duration and image size methods in TSAttachmentStream.
// FREEBIE
9 years ago
Michael Kirk 3be70e9719 log error on failure
// FREEBIE
9 years ago
Michael Kirk 4a6a02c009 Ensure updates don't clobber
// FREEBIE
9 years ago
Michael Kirk 8ee57d9132 save identity to legacy identity store so we can switch versions while
testing

// FREEBIE
9 years ago
Michael Kirk 0001b6c493 Code style per code review, no functional changes
// FREEBIE
9 years ago
Michael Kirk f2f3acb897 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
9 years ago
Matthew Chen 07bf3b9af5 Remove invalid assert in socket manager.
// FREEBIE
9 years ago
Matthew Chen fe796d6c52 Cache image size and audio duration on attachments.
// FREEBIE
9 years ago
Matthew Chen 58edbdfbd9 Let users manually specify the domain fronting country.
// FREEBIE
9 years ago
Matthew Chen 98ff7e5aba Add support for manually activating censorship circumvention.
// FREEBIE
9 years ago
Matthew Chen d3fc5e4ab8 Rework how the views observe socket state.
// FREEBIE
9 years ago
Matthew Chen 45b947dc04 Rework how the views observe socket state.
// FREEBIE
9 years ago
Matthew Chen 2171cd1d96 Add support for manually activating censorship circumvention.
// FREEBIE
9 years ago
Matthew Chen 66b8d54015 “Add to contacts” offer.
// FREEBIE
9 years ago
Matthew Chen fcc7eb6565 Try the country code for the local phone number when parsing phone numbers.
// FREEBIE
9 years ago
Matthew Chen df17403ec9 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen c955b189f7 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 9fb1012c6e Persist attachment file paths.
// FREEBIE
9 years ago
Matthew Chen c75769d407 Rename attachment source filename property.
// FREEBIE
9 years ago
Michael Kirk 92d72b3fc8 make nonatomic per code review
// FREEBIE
9 years ago
Michael Kirk 47b1c31b50 Contact Name in SN changed notifications
// FREEBIE
9 years ago
Michael Kirk fcbfde3874 nonblocking SN change notifications don't percolate group threads to the
top unless there is a message in that thread.

Otherwise the user is overwhelmed by a bunch of group threads with
redundant notifications. The notifications will be there if the user
later enters the threads. The affect is that only the thread with the
relevant message will pop to the top.

// FREEBIE
9 years ago
Michael Kirk 4becd43973 "Bob's SN changed" displayed in every group containing Bob
// FREEBIE
9 years ago
Matthew Chen 5bf3a80935 Honor the local calling code in select recipient view.
// FREEBIE
9 years ago
Matthew Chen 09712f0b7b Retry push token registration.
// FREEBIE
9 years ago
Michael Kirk e585b9052e remove checks for other country codes since it's expensive
Unfortunately calls to `NBPhoneNumberUtil parse:defaultRegion:error` are
not cheap, calling it with a bunch of permutations on every contact is
too expensive to justify it's incremental value unless we can get
upstream optimized.

e.g. for US numbers this was 26 extra calls per phone number

// FREEBIE
9 years ago
Michael Kirk 52be0e2ffc dont cache when parsing fails with error
// FREEBIE
9 years ago
Michael Kirk 1ee30023b9 Reduce time between editing contacts and seeing those changes in the app
* Move a couple lib methods behind our own interface
* Cache parsing phone numbers since it's expensive
* I considered caching formatting as well since it's also a bit
  expensive, but generating an appropriate cache key was actually slower
  than the raw implementation.

// FREEBIE
9 years ago
Matthew Chen e6ff79c126 Revert "Merge branch 'charlesmchen/autoMarkAsRead'"
This reverts commit 25e086c221, reversing
changes made to 77833e727a.
9 years ago
Michael Kirk 3cc982e65b use mic for voice message snippet
// FREEBIE
9 years ago
Matthew Chen 0936dd936b Don’t reply to “request group info” messages from non-members of the group in question.
// FREEBIE
9 years ago
Matthew Chen 8d10d19f8f Only reply to group info requester.
// FREEBIE
9 years ago
Matthew Chen a0c13490ca Clean up ahead of PR.
// FREEBIE
9 years ago
Matthew Chen f3ed7697db Move filename property to TSAttachment.
// FREEBIE
9 years ago
Michael Kirk 772b3a6ba1 thumbnail hash without allocating big string.
// FREEBIE
9 years ago
Michael Kirk 873d8ff2bc include emails in contat hash
// FREEBIE
9 years ago
Michael Kirk 5ac08dfeb4 hashable method to detect when contact has changed
// FREEBIE
9 years ago
Matthew Chen 150c166a60 Show example phone numbers.
// FREEBIE
9 years ago
Matthew Chen fb3e2557e0 Show example phone numbers.
// FREEBIE
9 years ago
Matthew Chen 587d035019 Don’t ignore “unnamed” phone numbers.
// FREEBIE
9 years ago
Matthew Chen 77dbf6480c Respond to CR.
// FREEBIE
9 years ago
Matthew Chen c89b9fb0bf Disable “disappearing messages” job when inactive.
// FREEBIE
9 years ago
Matthew Chen 6e52009ff0 Rework the “disappearing messages” logic.
// FREEBIE
9 years ago
Matthew Chen d5118273b8 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 315775ff23 Auto-rejoin groups by emitting and responding to “request group info” messages.
// FREEBIE
9 years ago
Michael Kirk e9c0c46a23 Always keep at least 3 old signed prekeys (accepted or otherwise).
If the keys weren't marked as accepted, we risk deleting keys which are
still probably relevant.

// FREEBIE
9 years ago
Matthew Chen b846532351 Flag voice messages as such in protos.
// FREEBIE
9 years ago
Matthew Chen 3e9fbb1bec Prefer to deduce the MIME type from the file extension using lookup, not the UTI type.
// FREEBIE
9 years ago
Matthew Chen cb6de93a83 Try to deduce attachment MIME type from the file extension if possible.
// FREEBIE
9 years ago
Matthew Chen 6c2de6ed56 Fix a hotspot in the phone number parsing logic.
// FREEBIE
9 years ago
Matthew Chen 1b93cd29c2 Rework handling of phone number names.
// FREEBIE
9 years ago
Matthew Chen 9bfcc8e38b Add “is complete” flag to contacts sync proto.
// FREEBIE
9 years ago
Matthew Chen 41e564db47 Use SignalAccount class to sync contacts.
// FREEBIE
9 years ago
Matthew Chen 741e5c02ac Add “is complete” flag to contacts sync proto.
// FREEBIE
9 years ago
Michael Kirk ad31c75e88 fix more compiler warnings
* initWithCoder is a designated initializer for *any* TSYapDatabase model
* doc fixes
* cast log param appropriately

Compiler Warnings: 337 -> 331

// FREEBIE
9 years ago
Michael Kirk 50df5b682b nullability annotations for TSInteraction
Compiler warnings: 343 -> 337

// FREEBIE
9 years ago
Michael Kirk c9f397d590 nullability audit for MimeTypeUtil
* added missing nullability annotations
* guard against insterting nil into set
* remove unused code

Compiler Warnings: 364 -> 343

// FREEBIE
9 years ago
Michael Kirk 1754ad25d2 nullability annotations
Compiler Warnings: 387 -> 364

// FREEBIE
9 years ago
Michael Kirk a92129a0ee better sending logs
// FREEBIE
9 years ago
Michael Kirk 4338c59356 disambiguate contact param
// FREEBIE
9 years ago
Matthew Chen 9b8d6bd87d Minor cleanup.
// FREEBIE
9 years ago
Matthew Chen 2a64ff29e5 Temporary change to improve read receipt logging. 9 years ago
Michael Kirk f4dd01e300 Properly handle "work", "home", and "other" labels
// FREEBIE
9 years ago
Matthew Chen 5058eb837e Add SignalAccount class.
// FREEBIE
9 years ago
Matthew Chen cd9e1fb574 Add SignalAccount class.
// FREEBIE
9 years ago
Matthew Chen e3c9598122 Extract labels for phone numbers.
// FREEBIE
9 years ago
Matthew Chen 9dc6014850 Extract labels for phone numbers.
// FREEBIE
9 years ago
Michael Kirk 52b19a9118 better debug messages about what *kind* of encrypted message we received
Uniform logging, removing redundant logging wherever possible, to add
details about what kind of message was received.

In particular, with calls, when there are lots of messages going back
and forth, this makes it easier to make sense of what's being exchanged.

// FREEBIE
9 years ago
Michael Kirk bf6f013153 debug tool: print signed prekey report
Example output:

    SignedPreKeys Report:
      currentId: 111111111
      firstPrekeyUpdateFailureDate: (null)
      prekeyUpdateFailureCount: 0
      All Keys (count: 2):
        #1 <SignedPreKeyRecord: id: 111111111, generatedAt: 2017-04-24 19:23:55 +0000, wasAcceptedByService:YES, signature: <abcdefgh ..>
        #2 <SignedPreKeyRecord: id: 222222222, generatedAt: 2017-04-20 19:23:55 +0000, wasAcceptedByService:YES, signature: <12345678 ..>

// FREEBIE
9 years ago
Matthew Chen b986db808d Add filename to attachment streams. 9 years ago
Matthew Chen 19754bacb9 Add a "UTI type for file extension" method.
// FREEBIE
9 years ago
Matthew Chen 72730c06a6 Improve handling of whitespace in contacts.
// FREEBIE
9 years ago
Matthew Chen 6686167cc3 Ignore oversize messages.
// FREEBIE
9 years ago
Michael Kirk e1055c26a3 Sync EndSession messages to linked devices
Alternatively, I considered deleting *only* the session with the device
which sent the message, but since other clients are deleting *all*
sessions associated with the contact, it will be less disruptive to get
in line with their behavior.

Fixes the scenario wherein:

* Alice.1 has a session with Bob.1 and Bob.2
* Bob.1 sends an EndSession to Alice
* Thus Alice.1 deletes her sessions with Bob.1 and Bob.2
* Bob.2 sends Alice1 "hi" (with the existing session - as a regular WM,
not a PKWM)
* Alice has no session with Bob.2 so cannot decrypt the message.

// FREEBIE
9 years ago
Michael Kirk a21108db5c Log message type in prod
// FREEBIE
9 years ago
Matthew Chen b40ec508b6 Do not retry fatal message send errors.
// FREEBIE
9 years ago
Michael Kirk 68476a51dc Download service emits progress notifications
// FREEBIE
9 years ago
Matthew Chen 9b24ad7f14 Do not try to resend unsaved outgoing messages when accepting a safety number change.
// FREEBIE
9 years ago
Matthew Chen f0ca468839 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 0e9da39c6b Add muting of threads.
// FREEBIE
9 years ago
Matthew Chen a3db112c50 Fix outgoing message status for messages sent from linked devices.
// FREEBIE
9 years ago
Matthew Chen 6341905c9b Respond to CR.
// FREEBIE
9 years ago
Matthew Chen ced9d6f460 Retry group sends if any of its errors are re-tryable.
// FREEBIE
9 years ago
Matthew Chen f191d6b096 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen aa70ada399 Refine error handling for outgoing group messages.
// FREEBIE
9 years ago
Matthew Chen db051b3b3e Consider group send a failure if sending to any member in the group fails.
// FREEBIE
9 years ago
Matthew Chen 1023eeb8a0 Rework outgoing message state.
// FREEBIE
9 years ago
Matthew Chen 1404d0d7eb Rework outgoing message state.
// FREEBIE
9 years ago
Matthew Chen bf18b1f286 Rework outgoing message state.
// FREEBIE
9 years ago
Matthew Chen 654ef89049 Rework outgoing message state.
// FREEBIE
9 years ago
Matthew Chen 04dc930e0c Rework outgoing message state.
// FREEBIE
9 years ago
Matthew Chen 0ab6bcd080 Rework outgoing message state.
// FREEBIE
9 years ago
Matthew Chen 42e005a498 Avoid lost messages by acknowledges message receipt after the message is processed.
// FREEBIE
9 years ago
Matthew Chen 406e2d862b De-bounce the prekey checks.
// FREEBIE
9 years ago
Matthew Chen 0224af7465 De-bounce the prekey checks.
// FREEBIE
9 years ago
Michael Kirk 522c191fd1 Persist when signed pre key was 'acceptedByService'
// FREEBIE
9 years ago
Matthew Chen fa2ff8158c Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 40dcc7c873 Honor attachment filenames.
// FREEBIE
9 years ago
Matthew Chen bc10aea202 Honor attachment filenames.
// FREEBIE
9 years ago
Matthew Chen b09f7e5e52 Honor attachment filenames.
// FREEBIE
9 years ago
Matthew Chen 715e9e85ff Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 00f1b53e61 Reduce usage of contacts intersection endpoint.
// FREEBIE
9 years ago
Matthew Chen 06a56ccede Update SignalAttachment to allow arbitrary attachments.
// FREEBIE
9 years ago
Matthew Chen aa3402b535 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 04b3166b85 Rework socket manager.
// FREEBIE
9 years ago
Matthew Chen b7e24c664b Rework socket manager.
// FREEBIE
9 years ago
Matthew Chen 3d46f8e835 Rework socket manager.
// FREEBIE
9 years ago
Michael Kirk edc556b106 Fix multiple match for SignalRecipient
when searching for contacts by phone number

// FREEBIE
9 years ago
Matthew Chen daa832bbca Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 17b751d22a Create block offer when non-contacts send you a message.
// FREEBIE
9 years ago
Matthew Chen d89d4dea8a Remove the properties related to Redphone and WebRTC support.
// FREEBIE
9 years ago
Matthew Chen e28a81e6ad Improve attachment upload progress indicator.
* Should never show up for attachments in the failed state.
* Show show up without delay for attachments being sent.
* Show disappear when attachment upload fails in any way.

// FREEBIE
9 years ago
Matthew Chen f08d779f4d Fix file extensions for arbitrary file types.
// FREEBIE
9 years ago
Matthew Chen e6cd3d0712 Fix audio playback.
// FREEBIE
9 years ago
Matthew Chen 004a952bc0 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 8258f26aec Don’t mark messages as failed until all retries are exhausted.
// FREEBIE
9 years ago
Michael Kirk 97f93eef7e only assert queues in debug
// FREEBIE
9 years ago
Michael Kirk 513c275107 Log when we delete sessions
// FREEBIE
9 years ago
Michael Kirk bb38fce54e Ensure that deleting sessions happens on session queue
// FREEBIE
9 years ago
Michael Kirk 2d93b8c6ec Handle mismatched/stale devices on session queue
The session state should never be manipulated concurrently.

// FREEBIE
9 years ago
Michael Kirk 773b09b015 Inspect session store on serial queue
// FREEBIE
9 years ago
Michael Kirk 9e74f38095 deprecate unused method
I'd want to spend time validating correctness if we ever wanted to use
this.

// FREEBIE
9 years ago
Michael Kirk 9a444f4288 Assert that session mutation occurs on serial queue
// FREEBIE
9 years ago
Michael Kirk 7578176e37 rename sessionCipher to sessionStoreQueue
// FREEBIE
9 years ago