Commit Graph

513 Commits (fbbb9276b9a16e3a71d16ab311a3379a68f77f15)

Author SHA1 Message Date
Matthew Chen d557817bb4 Format message statuses with date if possible.
// FREEBIE
8 years ago
Matthew Chen 834ad3f8e1 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 01bda556c8 Fix class rename.
// FREEBIE
8 years ago
Matthew Chen 6b8c9b6bcf Iterate the names of the incoming message queue extensions.
// FREEBIE
8 years ago
Matthew Chen eec0efa3c8 Fix class rename.
// FREEBIE
8 years ago
Matthew Chen a4d285f50d Respond to CR.
// FREEBIE
8 years ago
Matthew Chen aa7329013d Handle new-style delivery receipts.
// FREEBIE
8 years ago
Matthew Chen 25c40ea3cf Handle new-style delivery receipts.
// FREEBIE
8 years ago
Matthew Chen ee13084d5c Respond to CR.
// FREEBIE
8 years ago
Matthew Chen ffe44e68be Refactor linked device read receipts.
// FREEBIE
8 years ago
Matthew Chen 16d4256e99 Address deadlocks in profile manager.
// FREEBIE
8 years ago
Matthew Chen 19e010645e Respond to CR.
// FREEBIE
8 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
8 years ago
Matthew Chen f001e8c225 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen b74da07f7e Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 825503210b Remove extraneous database view.
// FREEBIE
8 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
8 years ago
Matthew Chen f2d19ffe09 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 7268bde506 Add stress group to debug UI.
// FREEBIE
8 years ago
Matthew Chen bd416176ae Add stress group to debug UI.
// FREEBIE
8 years ago
Matthew Chen 77e0c9664c Respond to CR.
// FREEBIE
8 years ago
Matthew Chen edd63164d7 Fix build breaks.
// FREEBIE
8 years ago
Matthew Chen 874ebf7038 Use private queues in message decrypter and batch processor.
// FREEBIE
8 years ago
Matthew Chen 077b74a0aa Fix handling of edge cases around groups.
// FREEBIE
8 years ago
Matthew Chen 2b0b49b7f6 Don't batch message decryption.
// FREEBIE
8 years ago
Matthew Chen bfb03c0db4 Fix message processing edge cases.
// FREEBIE
8 years ago
Matthew Chen 35a2470cb7 Post notifications asynchronously.
// FREEBIE
8 years ago
Matthew Chen 1c8dbcd223 Respond to CR.
// FREEBIE
8 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
8 years ago
Matthew Chen 2cfa24ba7b Respond to CR.
// FREEBIE
8 years ago
Matthew Chen b28c4b74b2 Pull out TSMessageDecrypter class.
// FREEBIE
8 years ago
Matthew Chen 993df25f3f Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 46f17a02cb DRY up decryption logic.
// FREEBIE
8 years ago
Matthew Chen e39b9169b9 Decrypt and process messages in batches.
// FREEBIE
8 years ago
Matthew Chen 9987ebb3c0 Decrypt and process messages in batches.
// FREEBIE
8 years ago
Matthew Chen 023c804a61 Decrypt and process messages in batches.
// FREEBIE
8 years ago
Matthew Chen fa353259c3 Process messages in a single transaction (wherever possible).
// FREEBIE
8 years ago
Matthew Chen 6fce2c26b7 Process messages in a single transaction (wherever possible).
// FREEBIE
8 years ago
Matthew Chen afc753e7ed Add batch message processor.
// FREEBIE
8 years ago
Matthew Chen c498e4b354 Decouple message decryption and processing.
// FREEBIE
8 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.
8 years ago
Matthew Chen a7546aee63 Modify read receipt photos to support sending read receipts to both linked devices and senders.
// FREEBIE
8 years ago
Matthew Chen 39a961e376 Rework incoming read receipts handling.
// FREEBIE
8 years ago
Matthew Chen 2b1ea19960 Modify read receipt photos to support sending read receipts to both linked devices and senders.
// FREEBIE
8 years ago
Matthew Chen 0e7eaf7c62 Modify read receipt photos to support sending read receipts to both linked devices and senders.
// FREEBIE
8 years ago
Matthew Chen 400f536e37 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 05b1818874 Don't "scroll to bottom" when messages are sent from desktop.
// FREEBIE
8 years ago
Matthew Chen 9dfebb2d4b Apply OWSFail() in more places.
// FREEBIE
8 years ago
Matthew Chen b95b5f69de Apply DataSource to message sender.
// FREEBIE
8 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
8 years ago
Matthew Chen bb1681f965 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen cc048b3971 Respond to CR.
// FREEBIE
8 years ago
Michael Kirk bdb75fa596 infer when group has been whitelisted on linked device
// FREEBIE
8 years ago
Matthew Chen b00db33d12 Don't ignore attachments.
// FREEBIE
8 years ago
Michael Kirk d71b7684a6 cleanup logging
// FREEBIE
8 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
8 years ago
Michael Kirk 69e8ca8eac Handle receiving profile key messages
(don't print empty bubble)

// FREEBIE
8 years ago
Michael Kirk 9c56660618 profile key flag and debug action
// FREEBIE
8 years ago
Michael Kirk 0feb966a1c comment cleanup / code formatting
// FREEBIE
8 years ago
Michael Kirk 6cde79c568 Assert profile key length on sending/receiving
// FREEBIE
8 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
8 years ago
Michael Kirk 526d5e33b9 Sync profile key to sibling devices when updating contact
// FREEBIE
8 years ago
Michael Kirk 1f3d2d1ed6 Send any profile key in contact sync
// FREEBIE
8 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
8 years ago
Michael Kirk bde40a1f9c Ensure avatar upates right after profile change.
// FREEBIE
8 years ago
Matthew Chen a825fad47b Start reworking the contact offers.
// FREEBIE
8 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
8 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
8 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
8 years ago
Michael Kirk 72b3f3779b Discard GroupInfoRequest from unknown group
// FREEBIE
8 years ago
Matthew Chen e01fbc247e Refine profile logic.
// FREEBIE
8 years ago
Matthew Chen 98def41782 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 823927685d Update profile on service.
// FREEBIE
8 years ago
Matthew Chen 83e2fbe28c Rework where profile key is attached in photos.
// FREEBIE
8 years ago
Matthew Chen b5fdc05b91 Move profile key to data, call, sync and null protos.
// FREEBIE
8 years ago
Matthew Chen 37ce388eb6 Add “add to profile whitelist” offer.
// FREEBIE
8 years ago
Michael Kirk f99d4e9df9 Merge branch 'hotfix/2.15.2' 8 years ago
Michael Kirk 3856f3dfb1 Improve asserts/logging
// FREEBIE
8 years ago
Matthew Chen 6ec756de44 Move profile manager to Signal.
// FREEBIE
8 years ago
Matthew Chen 540a0a8e48 Refine UserProfile class. Move local user properties to UserProfile.
// FREEBIE
8 years ago
Michael Kirk 8a4712bf4c Only access localNumber on AccountManager and cache it
// FREEBIE
8 years ago
Matthew Chen 539490ee19 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen d7f275ce73 Add accessor for other users’ profile names.
// FREEBIE
8 years ago
Matthew Chen aa6312b586 DRY up and refine the logic to attach the local profile key to outgoing messages.
// FREEBIE
8 years ago
Matthew Chen 26b668cce7 Add profile key to proto schema. Send and receive profile keys. Cache profile manager state.
// FREEBIE
8 years ago
Matthew Chen e58358ce53 Add profile key to content proto schema.
// FREEBIE
8 years ago
Matthew Chen a3b16812ec Add convenience category for YapDatabaseConnection.
// FREEBIE
8 years ago
Matthew Chen 4be706caf5 Add convenience category for YapDatabaseConnection.
// FREEBIE
8 years ago
Matthew Chen 0bd23345a1 Sketch out the profile view.
// FREEBIE
8 years ago
Matthew Chen 63e20cd8bb Sketch out profile manager.
// FREEBIE
8 years ago
Michael Kirk 4bf407a24f fix some compiler warnings
// FREEBIE
8 years ago
Michael Kirk a196693425 Make sure DB views are ready before kicking processing job
// FREEBIE
8 years ago
Michael Kirk 0b38b46683 remove unnecessary dispatch
// FREEBIE
8 years ago
Michael Kirk 6a5c6a9fc9 didBecomeActive kicks the processing queue
// FREEBIE
8 years ago
Michael Kirk 1066089980 Fix thread explosion
Without this, when the user has a large message queue to process, things
slow to a crawl as we spew more and more threads. Since it's on a serial
queue anyway, there's no need to have multiple threads executing this
code.

// FREEBIE
8 years ago
Matthew Chen 8e628a6296 Hide empty conversations in home view.
// FREEBIE
8 years ago
Matthew Chen f1807cd709 Add script to extract and gather analytics event names.
// FREEBIE
8 years ago
Michael Kirk 91ad2ec32b Properly handle too-large messages
1. Take note of any large messages.
2. If they are way too large, we just drop them on the floor.

// FREEBIE
8 years ago
Matthew Chen f973af5a83 Streamline analytics properties.
// FREEBIE
8 years ago
Michael Kirk 3f4dcecf15 ensure blocking keychange message has identityKey before proceeding
This is increasingly irrelevant due to recent safety number changes, but
legacy clients with old messages can still run into this.

FIXES: https://github.com/WhisperSystems/Signal-iOS/issues/2346

// FREEBIE
8 years ago
Michael Kirk eafc370bbe CR: move property to method to clearly avoid Mantle serialization
Also some formatting cleanup and extra asserts

// FREEBIE
8 years ago
Michael Kirk 4d8429186d Store undecrypted envelopes before doing any processing.
This lets us clear the server side queue immediately, and paves the way
for retry, give up logic.

// FREEBIE
8 years ago
Matthew Chen fa7a2407bf Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 543c05b2c5 Add a “critical” severity level for analytics events.
// FREEBIE
8 years ago
Matthew Chen 2418baec15 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 9587aab37b Instrument network errors.
// FREEBIE
8 years ago
Matthew Chen 117bca7c48 Instrument errors in app delegate.
// FREEBIE
8 years ago
Matthew Chen 19c0a7ad7c Instrument errors in message sender.
// FREEBIE
8 years ago
Matthew Chen e168db79aa Instrument errors in message manager.
// FREEBIE
8 years ago
Michael Kirk 6e19c1aae8 Don't crash when messaging user with malformed profile
// FREEBIE
8 years ago
Matthew Chen 64a99c63b3 [SSK] Migrating changes from obsolete SSK repo.
// FREEBIE
8 years ago
Matthew Chen 4f5b2993b0 [SSK] Migrating changes from obsolete SSK repo.
// FREEBIE
8 years ago
Michael Kirk ccb4a88742 Import SSK (and history) into Signal-iOS
git remote add ssk ../SignalServiceKit
git remote update
git merge -s ours --allow-unrelated-histories --no-commit ssk/master
git read-tree --prefix=SignalServiceKit -u ssk/master
git commit
8 years ago