* new protobufs from libsignal-service-java@a1c93edc40e3ce201fa4e70339a3e6f4e197e319
* Makefile to build ObjC classes from *.proto
* refactored some touched code to minimize duplication
* removed unused protos
* deleted some dead code
* renamed method for clarity
// FREEBIE
FIXES#1296
Our pod SSKeychain was renamed to -> SAMKeychain to avoid collision with
the iOS10 library SSKeychain.
* log failure to write keychain (this seems to only happen on simulator)
* ensure we exit if we fail to set DB cipher key
// FREEBIE
Our pod SSKeychain was renamed to -> SAMKeychain to avoid collision with
the iOS10 library SSKeychain.
* log failure to write keychain (this seems to only happen on simulator)
* ensure we exit if we fail to set DB cipher key
// FREEBIE
TSAnimatedAdapter is used when rendering GIFs. TSAnimatedAdapter
inherits from JSQMediaItem but does not provide a custom implementation
of the hash method. The default implementation of hash in JSQMediaItem
results in all messages of a given interaction type (incoming,
outgoing) sharing a cached bubble size. For this reason, JSQMediaItem
subclasses are required to implement hash (see
https://github.com/jessesquires/JSQMessagesViewController/issues/631).
This commit fixes issue #1275 by implementing hash in TSAnimatedAdapter
the same way TSPhotoAdapter does.
On older devices with lots of data, the orphan data cleaner can time
out. Here we're trading certainty that the migration completed for
confidence that the boot process doesn't time out.
// FREEBIE
The object is already cached & the waveform view constructed when scrolling,
so there's no need to re-create the view.
This doesn't fix the problem with the wave-form generation on the first
view of the message. That is a more critical problem in the underlying
SCWaveformView class which renders on the main thread instead of doing
it asynchronously.
FIXES#1258
Most of the work was done in SignalServiceKit 0.0.7, this adapts to
those changes.
Migration to clean any orphaned interactions/attachments.
- don't set new migration version until migration was successful.
- remove dead code from migrations
- rename message.attachments->message.attachmentIds
- Remove unused parameter from GroupModel
- formatting touched method/'s signatures
//FREEBIE
The images for group avatars are stored directly in the datbase, which
is fine since they are small. But then there's no reason to have them
lingering on the filesystem.
Also removed the unused group associatedAttachmentId property.
// FREEBIE
What we *previously* refered to as attachments are actually just the
attachment's id (NSString). This has tripped me up a few too many
times.
Also, use generics with attachment id's array.
// FREEBIE
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
- 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
* Set height of toolbar based on actual font height. FIXES#1282
* max height for compose field FIXES#1186
Still absent is resizing to fit draft.
// FREEBIE
The root of the problem is we were using the deprecated ALAssetsLibrary
framework, which couldn't find certain assets.
By using the photos framework not only are we able to find these
assets, but it also cleans up our code:
* no more copying byte buffers
* no more detecting file type
// FREEBIE
Previously, if you tapped in the white space adjacent to the text bubble,
the bubble would highlight. No menu was show or interaction made
available. This is confusing.
It was fixed upstream, so this was as simple as:
pod update JSQMessagesViewController
// FREEBIE
This is closer to the 2.3 version.
Seems like upstream sizing has changed since our JSQMVC upgrade. This wider size calculation makes sense if you're losing space to the avatar, but since we're not using avatars the full width bubbles can make the whole view seem a bit crowded when you have large blobs of text.
// FREEBIE
We were ocassionally seeing extra tall error messages. This is because,
when appropriate, we were adding the space for a timestamp, but then
never actually rendering the time stamp.
So now:
- Error Messages aren't rendered too-tall
- Error Messages get a printed timestamp when appropriate
// FREEBIE
Using description in log output crashes when the description is a media
message, since printing media description uses a transaction within our
existing transaction.
Instead we'll use a simpler debugDescription for simple text building,
like logging.
// FREEBIE
copy/save/delete is accessed via longpress for all media messages, just
like for simple text messages.
Notes
-----
We don't support saving audio attachments as it's not clear where they should go.
(I don't think users expect them to end up in their iTunes library.)
There is still no UX for "pasting" media into Signal.
Removed the now redundant (and confusing) "share" button interface.
//FREEBIE