Commit Graph

13 Commits (9fb1012c6ea4bf6c9c26780da4deb4e74d170fc9)

Author SHA1 Message Date
Matthew Chen 9fb1012c6e Persist attachment file paths.
// FREEBIE
8 years ago
Matthew Chen c75769d407 Rename attachment source filename property.
// FREEBIE
8 years ago
Matthew Chen f3ed7697db Move filename property to TSAttachment.
// FREEBIE
8 years ago
Matthew Chen b846532351 Flag voice messages as such in protos.
// FREEBIE
8 years ago
Matthew Chen b986db808d Add filename to attachment streams. 8 years ago
Matthew Chen 40dcc7c873 Honor attachment filenames.
// FREEBIE
8 years ago
Matthew Chen 88f343a0aa Attempt to fix the "frequent attachment download errors with low server ids".
// FREEBIE
8 years ago
Matthew Chen 865d9d7b96 Add "is uploaded" property to attachment streams.
// FREEBIE
8 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 3e5af16dc3 Don't explode when attachment support revoked.
Also, more nullability annotations.

NSURL can't be given a nil filepath. This can occur when a previously
supported attachment was downloaded, and then viewed after that
attachment was no longer supported (e.g. when installing back and forth
across versions)

// FREEBIE
9 years ago
Michael Kirk 0f9a3334c1 Ensure interactions removed when thread is deleted
In theory, this should have already been handled by the
YapDatabaseRelationship extension via edges.

However, in practice, there were situations (cause unknown) where
interactions would exist without an edge to their corresponding thread.

Rather than being clever with the edge/callback machinery, now threads
explicitly delete all their interactions, and interactions delete all
their attachments (when applicable).

Also, a class to clean up spurious interactions / attachments

In the process:
- refactored TSYapDatabaseObject init to specify designated initializer
- added some testing niceties to TSYapDatabaseObject

// FREEBIE
9 years ago
Michael Kirk 2858694ee0 style changes // fix compiler warnings
- log errors
- forward declare where possible
- clang-format
- remove inaccurate file headers
- include Pods in Example app build target to get SignalServiceKit warnings
- Fix those warnings!

// FREEBIE
9 years ago
Michael Kirk 3024225655 Get tests + ci running 9 years ago