Commit Graph

22 Commits (d25a934039e3e14dcb128bd7b1648e3f514bbbf6)

Author SHA1 Message Date
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
Matthew Chen a3db112c50 Fix outgoing message status for messages sent from linked devices.
// FREEBIE
9 years ago
Matthew Chen 654ef89049 Rework outgoing message state.
// FREEBIE
9 years ago
Matthew Chen 0ab6bcd080 Rework outgoing message state.
// FREEBIE
9 years ago
Matthew Chen f5237ef5d1 Add TSBlockingManager.
// FREEBIE
9 years ago
Matthew Chen 88f343a0aa Attempt to fix the "frequent attachment download errors with low server ids".
// FREEBIE
9 years ago
Michael Kirk a92158ef16 CR: fix register `async` where specified
* fix thread test
* add IncomingMessageFinder test
* use constants
* clearer comments

// FREEBIE
9 years ago
Michael Kirk 975726e022 Dedupe incoming messags
// FREEBIE
9 years ago
Michael Kirk 4ba1e86ec1 Explain send failures for text and media messages
Motivation
----------
We were often swallowing errors or yielding generic errors when it would
be better to provide specific errors.

We also didn't create an attachment when attachments failed to send,
making it impossible to show the user what was happening with an
in-progress or failed attachment.

Primary Changes
---------------
- Funnel all message sending through MessageSender, and remove message sending
  from MessagesManager.
  - Record most recent sending error so we can expose it in the UI
  - Can resend attachments.
  - Update message status for attachments, just like text messages
- Extracted UploadingService from MessagesManager
  - Saving attachment stream before uploading gives uniform API for send vs.
    resend
  - update status for downloading transcript attachments
- TSAttachments have a local id, separate from the server allocated id
  This allows us to save the attachment before the allocation request. Which is
  is good because:
  1. can show feedback to user faster.
  2. allows us to show an error when allocation fails.

Code Cleanup
------------
- Replaced a lot of global singleton access with injected dependencies to make
  for easier testing.
- Never save group meta messages. Rather than checking before (hopefully) every
  save, do it in the save method.
- Don't use callbacks for sync code.
- Handle errors on writing attachment data
- Fix old long broken tests that weren't even running. =(
- Removed dead code
- Use constants vs define
- Port flaky travis fixes from Signal-iOS

// FREEBIE
9 years ago
Michael Kirk 34868b9b0f fix captions in groups and sync messages (#42)
* Fix incoming group caption for groups.
* sync message transcript captions are expired

// FREEBIE
9 years ago
Michael Kirk 40cdc7f224 disappearing messages
* Support for disappearing messages
* update inbox thread preview when receiving message

// FREEBIE
9 years ago
Michael Kirk 5b06b4351f Fix timeout on launch for some users (#36)
This would especially affect users with large databases on older
devices.

Some of these database extensions aren't strictly necessary to launch
the app. Theoretically we could see weird read receipt behavior for
the initial 10-30 seconds after the app is launched for first time.

// FREEBIE
9 years ago
Michael Kirk 27dfb59a0c Emit notification when message is read.
We observe this in Signal to remove notifications for messages that were
read remotely.

// FREEBIE
9 years ago
Michael Kirk eb96f846a4 Send user agent to desktop so they can pick a theme for us
// FREEBIE
9 years ago
Michael Kirk 0933b92128 Fix race condition with read receipts before incoming message
// FREEBIE
9 years ago
Michael Kirk c8a5f50763 Fixup DevicesManager
* By providing a view extension for secondary devices we can use that in
  a view mapping to power our devices view controller, and avoid any race
  conditions with uncommitted transactions.

* Fix crash when you're not in your own contacts

* New device appears on top

* Don't show "edit" button unless there are devices, or rather, the helpers to do so.

* Fix glitchy refresh

  Saving unchanged records was causing the tableview to redraw, which was
  mostly invisible, except that if the refresh indicator were running, it
  would twitch.

// FREEBIE
9 years ago
Michael Kirk c39e8b0bc6 extract constant for image/png
// FREEBIE
9 years ago
Michael Kirk acb89f0b0f Outgoing Read Receipts
// FREEBIE
9 years ago
Michael Kirk 580781e3e4 Incoming Read Receipts
// FREEBIE
9 years ago
Michael Kirk a99fde4d3b Device manager
// FREEBIE
9 years ago
Michael Kirk d48fd158b7 Build contact/group exports with data streams
Ideally we'd be using file streams so we wouldn't have to load it all
into ram but none of the attachment uploading infrastructure takes
streams (yet!)

// FREEBIE
9 years ago
Michael Kirk 9093be2b0d Device provisioning
// FREEBIE
9 years ago