Commit Graph

245 Commits (bb4d94fd1ff2b0644db602e7e7c47b2263d3bf4f)

Author SHA1 Message Date
Matthew Chen ee13084d5c Respond to CR.
// FREEBIE
7 years ago
Matthew Chen ffe44e68be Refactor linked device read receipts.
// FREEBIE
7 years ago
Matthew Chen 16d4256e99 Address deadlocks in profile manager.
// FREEBIE
7 years ago
Matthew Chen 19e010645e Respond to CR.
// FREEBIE
7 years ago
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
7 years ago
Matthew Chen f001e8c225 Respond to CR.
// FREEBIE
7 years ago
Michael Kirk ce2a4422e3 fix desktop linking for some users
// FREEBIE
7 years ago
Matthew Chen b74da07f7e Respond to CR.
// FREEBIE
7 years ago
Matthew Chen 825503210b Remove extraneous database view.
// FREEBIE
7 years ago
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
7 years ago
Matthew Chen f2d19ffe09 Respond to CR.
// FREEBIE
7 years ago
Matthew Chen 7268bde506 Add stress group to debug UI.
// FREEBIE
7 years ago
Matthew Chen bd416176ae Add stress group to debug UI.
// FREEBIE
7 years ago
Matthew Chen 77e0c9664c Respond to CR.
// FREEBIE
7 years ago
Matthew Chen edd63164d7 Fix build breaks.
// FREEBIE
7 years ago
Matthew Chen 874ebf7038 Use private queues in message decrypter and batch processor.
// FREEBIE
7 years ago
Matthew Chen 077b74a0aa Fix handling of edge cases around groups.
// FREEBIE
7 years ago
Matthew Chen 2b0b49b7f6 Don't batch message decryption.
// FREEBIE
7 years ago
Matthew Chen bfb03c0db4 Fix message processing edge cases.
// FREEBIE
7 years ago
Matthew Chen 35a2470cb7 Post notifications asynchronously.
// FREEBIE
7 years ago
Matthew Chen 1c8dbcd223 Respond to CR.
// FREEBIE
7 years ago
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
7 years ago
Matthew Chen 2cfa24ba7b Respond to CR.
// FREEBIE
7 years ago
Matthew Chen b28c4b74b2 Pull out TSMessageDecrypter class.
// FREEBIE
7 years ago
Matthew Chen f1b7d895e2 Modify precommit script to clean up includes and forward declarations.
// FREEBIE
7 years ago
Matthew Chen 993df25f3f Respond to CR.
// FREEBIE
7 years ago
Matthew Chen 46f17a02cb DRY up decryption logic.
// FREEBIE
7 years ago
Matthew Chen e39b9169b9 Decrypt and process messages in batches.
// FREEBIE
7 years ago
Matthew Chen 9987ebb3c0 Decrypt and process messages in batches.
// FREEBIE
7 years ago
Matthew Chen 023c804a61 Decrypt and process messages in batches.
// FREEBIE
7 years ago
Matthew Chen fa353259c3 Process messages in a single transaction (wherever possible).
// FREEBIE
7 years ago
Matthew Chen 6fce2c26b7 Process messages in a single transaction (wherever possible).
// FREEBIE
7 years ago
Matthew Chen afc753e7ed Add batch message processor.
// FREEBIE
7 years ago
Matthew Chen c498e4b354 Decouple message decryption and processing.
// FREEBIE
7 years ago
Matthew Chen bfd50a9e0e Make "database view registration complete" check thread-safe.
// FREEBIE
7 years ago
Matthew Chen 8a4d67a6e4 Respond to CR.
// FREEBIE
7 years ago
Matthew Chen 183f0f1ccd Respond to CR.
// FREEBIE
7 years ago
Matthew Chen 74b2f30523 Revert "Modify read receipt photos to support sending read receipts to both linked devices and senders."
This reverts commit 37e67179c8a8d6ebfdfa124ef0c1229f220ed11d.
7 years ago
Matthew Chen a7546aee63 Modify read receipt photos to support sending read receipts to both linked devices and senders.
// FREEBIE
7 years ago
Matthew Chen 39a961e376 Rework incoming read receipts handling.
// FREEBIE
7 years ago
Matthew Chen 737503549d Rework incoming read receipts handling.
// FREEBIE
7 years ago
Matthew Chen 2b1ea19960 Modify read receipt photos to support sending read receipts to both linked devices and senders.
// FREEBIE
7 years ago
Matthew Chen 0e7eaf7c62 Modify read receipt photos to support sending read receipts to both linked devices and senders.
// FREEBIE
7 years ago
Matthew Chen a5ece18e6c Fix build break.
// FREEBIE
7 years ago
Matthew Chen 400f536e37 Respond to CR.
// FREEBIE
7 years ago
Matthew Chen 872ce17dd6 Clean up data source temp files when complete.
// FREEBIE
7 years ago
Matthew Chen 05b1818874 Don't "scroll to bottom" when messages are sent from desktop.
// FREEBIE
7 years ago
Matthew Chen d3ad0950ba Clean up the data source class.
// FREEBIE
7 years ago
Matthew Chen 9dfebb2d4b Apply OWSFail() in more places.
// FREEBIE
7 years ago
Matthew Chen c21a7673c8 Rework preservation of attachment filenames.
// FREEBIE
7 years ago
Matthew Chen 0746b1300d Apply DataSource to message sender.
// FREEBIE
7 years ago
Matthew Chen b95b5f69de Apply DataSource to message sender.
// FREEBIE
7 years ago
Matthew Chen 20e5013aae Convert DataSource to Objective-C.
// FREEBIE
7 years ago
Matthew Chen 69816cdf0e Convert DataSource to Objective-C.
// FREEBIE
7 years ago
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
7 years ago
Matthew Chen bb1681f965 Respond to CR.
// FREEBIE
7 years ago
Matthew Chen cc048b3971 Respond to CR.
// FREEBIE
7 years ago
Matthew Chen d032339472 Modify debug builds to use production service.
// FREEBIE
7 years ago
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
7 years ago
Michael Kirk 1f7b6f61c6 Regression test for provisioning cipher
// FREEBIE
7 years ago
Michael Kirk bdb75fa596 infer when group has been whitelisted on linked device
// FREEBIE
7 years ago
Matthew Chen b00db33d12 Don't ignore attachments.
// FREEBIE
7 years ago
Michael Kirk 3ffb321e2a fix assert
// FREEBIE
7 years ago
Michael Kirk d71b7684a6 cleanup logging
// FREEBIE
7 years ago
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
7 years ago
Michael Kirk 69e8ca8eac Handle receiving profile key messages
(don't print empty bubble)

// FREEBIE
7 years ago
Michael Kirk 9c56660618 profile key flag and debug action
// FREEBIE
7 years ago
Michael Kirk 0feb966a1c comment cleanup / code formatting
// FREEBIE
7 years ago
Michael Kirk 6cde79c568 Assert profile key length on sending/receiving
// FREEBIE
7 years ago
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
7 years ago
Michael Kirk 526d5e33b9 Sync profile key to sibling devices when updating contact
// FREEBIE
7 years ago
Michael Kirk 46919e4702 Add own profile key to multidevice provisioning message
// FREEBIE
7 years ago
Michael Kirk 1f3d2d1ed6 Send any profile key in contact sync
// FREEBIE
7 years ago
Michael Kirk f0a57edde0 proto update: multiDevice profileKey sync
Also:

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

// FREEBIE
7 years ago
Michael Kirk 1e51bf4899 extract event names
// FREEBIE
7 years ago
Michael Kirk 251e206b6d profiles vs. censorship circumvention
// FREEBIE
7 years ago
Michael Kirk bde40a1f9c Ensure avatar upates right after profile change.
// FREEBIE
7 years ago
Matthew Chen 703b348091 Respond to CR.
// FREEBIE
7 years ago
Matthew Chen a9b55675cd Add assert to ensure that we don't use write transactions before sync database view registration is complete.
// FREEBIE
7 years ago
Matthew Chen 97f74ca5b4 Only use staging service in debug builds.
// FREEBIE
7 years ago
Matthew Chen a825fad47b Start reworking the contact offers.
// FREEBIE
7 years ago
Matthew Chen 98eb4693c5 Rework the contact offers.
// FREEBIE
7 years ago
Michael Kirk 0ab958f03a cleanup per codereview
- reference OWS OpenSSL
- clarify comments
- fix typo

// FREEBIE
7 years ago
Michael Kirk 0f9f26a577 handle remote user's profile key has changed
// FREEBIE
7 years ago
Michael Kirk 72fbb02028 aes-gcm via openssl
// FREEBIE
7 years ago
Matthew Chen 164bf19b47 Respond to CR.
// FREEBIE
7 years ago
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
7 years ago
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
7 years ago
Michael Kirk 97afa4d48a verification on decrypt
// FREEBIE
7 years ago
Michael Kirk 135243e383 CR: variable rename, better comments, fix up tests
// FREEBIE
7 years ago
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
7 years ago
Michael Kirk fc3f9ae396 Replace server sent avatar URL with hardcoded
// FREEBIE
7 years ago
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
7 years ago
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
7 years ago
Michael Kirk a3ae22c84f Upload profile avatar to service
WIP, this currently lacks crypto pending further discussion.

// FREEBIE
7 years ago
Michael Kirk 45a1f534ba Rename method to make way for new method.
No behavioral changes.

// FREEBIE
7 years ago
Michael Kirk 72b3f3779b Discard GroupInfoRequest from unknown group
// FREEBIE
7 years ago
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
7 years ago
Michael Kirk e07ed50170 define avatar form URL
// FREEBIE
7 years ago
Matthew Chen e01fbc247e Refine profile logic.
// FREEBIE
7 years ago