Commit Graph

22799 Commits

Author SHA1 Message Date
Michael Kirk
a595cb9326 Desktop Integration Fixups
Work done in SSK
* remove sync data files after sync
* fix race condition with read receiptsA

Update YapDatabase

// FREEBIE
2016-09-08 17:32:28 -04:00
Michael Kirk
019310f284 Deselect table rows when swiping back in table views
// FREEBIE
2016-09-07 22:50:21 -04:00
Michael Kirk
7e67fb1939 Some style for the QR code scanner.
Also made identity key scanner appear faster. Previously we were
waiting for camera to initialize. Now we do this after the view has
loaded - with a black background, the affect is preferable than
lagging on the transition.

// FREEBIE
2016-09-07 22:43:19 -04:00
Michael Kirk
f28400146f bump build
// FREEBIE
2016-09-07 17:51:54 -04:00
Michael Kirk
7c3a07960f Device manager fixes
* Avoid intermittent crash in device manager via YapDatabaseModified
* Properly align refresh text when expecting new device
* Avoid glitchy activityIndicator while polling
* Expose edit mode toggle

Much of the code changes here were in the corresponding SSK update.

// FREEBIE
2016-09-06 17:16:42 -04:00
Michael Kirk
dee26e6e0a Use PNG constant
// FREEBIE
2016-09-06 15:57:44 -04:00
Michael Kirk
9006ff604f Multi device read receipts.
All the heavy lifting is in SignalServiceKit.

// FREEBIE
2016-09-06 15:57:44 -04:00
Michael Kirk
428f7fca19 Adapt to nullability annotations in SignalServiceKit
// FREEBIE
2016-09-06 15:57:44 -04:00
Michael Kirk
92290a5d4d Fix: Inbox count not updating while viewing archive
e.g. If I'm viewing the archive when a new message comes in

// FREEBIE
2016-09-06 15:57:44 -04:00
Michael Kirk
ef6784ed95 Device Manager
* List linked devices
* Adding a new device
* Removing a device

TODO: design on the QRScanner

// FREEBIE
2016-09-06 15:57:44 -04:00
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
2016-09-02 19:45:02 -04:00
Michael Kirk
fb9f0f9a4d Some nullability annotations
- prefer empty list (null object pattern!) for attachments vs nil
- stop passing nil args to init

// FREEBIE
2016-09-02 19:45:02 -04:00
Michael Kirk
8526f018e5 fixup group sync 2016-09-02 19:45:02 -04:00
Michael Kirk
84156698c4 Provision device from QRCode.
NEEDS DESIGN - will likely have an intermediate "device manager" screen.

* extracted QRCode Scanner into re-usable ViewController

// FREEBIE
2016-09-02 12:40:21 -04:00
Michael Kirk
69da0b3c25 Sync Groups with Desktop
// FREEBIE
2016-09-02 12:29:55 -04:00
Michael Kirk
36d3691c74 gather up device syncing classes
// FREEBIE
2016-09-02 12:29:54 -04:00
Michael Kirk
98d1c59bfc Sync Contacts with Desktop
* TODO refactor attachment sending to work without thread/message
* TODO de-dupe attachment pointer building code

// FREEBIE
2016-09-02 12:29:43 -04:00
Michael Kirk
fe7171dd93 Sync messages with your other devices
After provisioning a desktop client, you'll see messages sent from your
phone appear on your desktop client, and messages sent from the desktop
client appear on your phone.

* In the process extracted some of the Attachment processing logic out
  of the giant MessagesManager.
* Some nullability annotations on affected files.

// FREEBIE
2016-09-02 12:28:58 -04:00
Michael Kirk
9093be2b0d Device provisioning
// FREEBIE
2016-09-02 12:28:58 -04:00
Michael Kirk
6ec21ade9b TSContactThread doesn't need to know protobufs
Just pass in the relay since that's the only thing we care about

// FREEBIE
2016-09-02 12:28:58 -04:00
Michael Kirk
f4d90688b9 Replace compiler warning with logging message
// FREEBIE
2016-09-02 12:28:57 -04:00
Michael Kirk
4d52d28e06 Use non-deprecated method for sending data.
No copying required in our case since we've just built the data for only
this purpose.

// FREEBIE
2016-09-02 12:28:57 -04:00
Michael Kirk
c1a0b88232 Don't crash when contact lookup is given nil contact
// FREEBIE
2016-09-02 12:28:57 -04:00
Michael Kirk
5ae2717872 Simplify deviceMessages method
no need for a callback as it's a sync method.

// FREEBIE
2016-09-02 12:28:57 -04:00
Michael Kirk
9fe0ca000a bump version
// FREEBIE
2016-09-02 12:28:57 -04:00
Michael Kirk
6545161192 thread is set during notification callback.
It should *not* be non-atomic

// FREEBIE
2016-08-23 14:24:48 -04:00
Michael Kirk
eef2002224 Clean up settings (#1316)
* Remove unused (hidden) button from settings
* dynamic type for settings cells
* prefer property vs ivar access
* property attributes

// FREEBIE
2016-08-22 17:41:11 -04:00
Michael Kirk
cc2d47fbd3 Update protocol (#1315)
* Update to latest SignalServiceProtocol
* Show SignalServiceKit compiler warnings

// FREEBIE

* Update to latest signal protocol

// FREEBIE
2016-08-22 16:54:31 -04:00
Michael Kirk
1d0b645fc9 Update to new protocol (#23)
* 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
2016-08-22 16:09:58 -04:00
Michael Kirk
e56d41edc7 Otherwise we'll never run future migrations. (#1314)
// FREEBIE
2016-08-21 14:15:50 -04:00
Michael Kirk
bff6e5613a Avoid collision with iOS10 SSKeychain framework (#1308)
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
2016-08-18 14:12:23 -04:00
Michael Kirk
f3a91c2629 Avoid collision with iOS10 SSKeychain framework (#24)
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
2016-08-18 13:40:48 -04:00
James Barclay
f8a0be4c70 Return immutable data from generateSecureRandomData:length and use OSStatus to check the status of SecRandomCopyBytes. (#1306) 2016-08-17 16:09:57 -04:00
Michael Kirk
b29174a374 Merge pull request #1305 from WhisperSystems/default-screen-security
Enable screen security by default / code cleanup
2016-08-15 10:40:10 -04:00
Michael Kirk
9a86ca76ce screen security is enabled by default
// FREEBIE
2016-08-15 10:07:14 -04:00
Michael Kirk
58548c68cc code cleanup
- refactor screen protection code for clarity
- remove unused settings cell class
- remove unused preferences

// FREEBIE
2016-08-15 10:07:14 -04:00
Michael Kirk
006c4ba958 Update dependencies. (#1304)
* SSK update adds emoji for incoming animated GIFs

// FREEBIE
2016-08-15 10:06:51 -04:00
Adam Stiles
52861a6ef5 Fix incorrect GIF message bubble sizing (#1300)
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.
2016-08-15 09:39:46 -04:00
Michael Kirk
6120bd9e8e Orphan-data cleanup no longer causes timeout (#1303)
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
2016-08-15 08:06:34 -04:00
ArkadiuszBanas
01ab8d132d Handle animated content type in TSAttachment:description: (#19)
Displaying icons for gifs was missing in messages list cells
(https://github.com/WhisperSystems/Signal-iOS/issues/1271).

//FREEBE
2016-08-02 11:50:59 -06:00
Vitali Lovich
547cd9797a Improve audio waveform scrolling performance (#1292)
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
2016-08-02 10:52:20 -06:00
Michael Kirk
92b3ea5d25 Re-enable attachment cleanup migration after fixing it in SSK (#1298)
// FREEBIE
2016-08-01 10:41:10 -07:00
Michael Kirk
9aa88f6ce5 Merge pull request #21 from WhisperSystems/fix-delete-attachments
Fixup e61c81 by migrating old schema
2016-08-01 09:41:38 -07:00
Michael Kirk
baf564db2e Fixup e61c81 by migrating old schema
// FREEBIE
2016-08-01 09:09:12 -07:00
Michael Kirk
000a5941f4 Delete attachment cleanup migration.
After running locally, I noticed many old threads missing old
attachments. I'll do some further investigation.

// FREEBIE
2016-08-01 08:21:32 -07:00
Michael Kirk
9f2bb5d2cc Fixes lingering interactions after removing thread (#1297)
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
2016-07-31 15:25:07 -07:00
Michael Kirk
c14e4bb7b3 Merge pull request #20 from WhisperSystems/fix-delete-attachments
Fix: deleting thread sometimes fails to recover disk space, new thread reappears with old messages.

// FREEBIE
2016-07-31 09:02:07 -07:00
Michael Kirk
28281ccfdd Delete lingering group avatar attachments
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
2016-07-31 08:49:01 -07:00
Michael Kirk
e61c818738 Clarify message.attachments -> attachmentIds
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
2016-07-31 08:49:01 -07:00
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
2016-07-31 08:49:01 -07:00