552 Commits

Author SHA1 Message Date
Mikunj
75a8123d1e Send friend request accept message back to the user. 2019-06-06 10:39:24 +10:00
Niels Andriesse
858b34306b Share actual public key 2019-06-06 10:04:43 +10:00
Mikunj
89d5c4d0f1 Generate PreKeyBundle if we're sending a friend request. 2019-06-06 09:48:02 +10:00
Mikunj
7d33a9cc8f Always send a friend request if we're not friends.
Pass down isFriendRequest to message sender.
2019-06-05 15:53:10 +10:00
Niels Andriesse
2c35ed2177 Fix ugly spacing 2019-06-05 15:49:15 +10:00
Mikunj
e2ffab9e19 Added friend request state in thread.
Added friend request receive logic.
2019-06-05 12:42:55 +10:00
Mikunj
a0f95c033a Pass PreKeyBundleStore into message sender. 2019-06-05 09:29:18 +10:00
Niels Andriesse
4148d598f9 Stub key pair screen 2019-06-04 16:37:45 +10:00
Mikunj
384a5ba35d Update RefreshPreKeysJob. 2019-06-04 15:00:27 +10:00
Niels Andriesse
4b1c5dfce2 Quick fix compilation issues 2019-06-04 11:45:29 +10:00
Niels Andriesse
72f95dfff3 Silence Gradle warning 2019-06-03 16:25:02 +10:00
Mikunj
e19a71769f Added loki message handling. 2019-06-03 16:11:22 +10:00
Mikunj
9d4509d130 Use LokiServiceCipher when decrypting incoming message. 2019-06-03 14:02:29 +10:00
Greyson Parrelli
2a644437fb Add sticker support.
No sticker packs are available for use yet, but we now have the
latent ability to send and receive.
2019-05-30 01:08:01 -04:00
Alan Evans
9445555d66
Code analysis - address @NotNull/@Nullable issues. 2019-05-22 13:51:56 -03:00
Greyson Parrelli
7b4299d5da Bring back conscrypt, improve provider initialization ordering. 2019-05-02 14:32:48 -07:00
Greyson Parrelli
ecea6abeb6 Temporary revert (again) to fix an avatar retrieval issue.
This reverts commit 77524ae1f24a1d356f3e2091270ffaed1e749ada.
2019-05-01 08:25:14 -07:00
Greyson Parrelli
77524ae1f2 Revert "Temporary revert to fix an avatar retrieval issue."
This reverts commit 267bc32e23afe823b99e5b9be17806da32765aec.
2019-04-30 12:51:58 -07:00
Greyson Parrelli
1c47812877 Fix crash when migrating read receipt jobs.
Fixes #8764
2019-04-15 15:45:16 -04:00
Greyson Parrelli
4a3c173adb Migrated to new JobManager. 2019-04-15 10:56:26 -04:00
Alan Evans
9c40de5bf1 Save the SMS setting on a per-conversation basis. 2019-04-15 10:13:35 -04:00
Greyson Parrelli
267bc32e23 Temporary revert to fix an avatar retrieval issue.
This reverts commit 8aa185070bf16fae370e3c7cac17bbcc4d9f5852.
2019-04-03 16:32:52 -04:00
Greyson Parrelli
8caaf057e8 Remove unnecessary pre-19 code branches.
Now that our minSdk is 19, we can remove a lot of old code paths that
only ran pre-19.
2019-03-21 11:19:06 -07:00
Moxie Marlinspike
8aa185070b Update libsignalservice to 2.13.0
- Eliminate the explicit spongycastle dependency. All access to
  primitives is done through the JCE interfaces now, which allows
  us to use a secure native-backed provider like conscrypt.

- Use conscrypt for our default security provider. This gives us
  fast TLS 1.2 and 1.3 support on all devices, even before they
  had platform support (like 4.4).

- Update minSdk to 18. Unfortunately the JCE interfaces for GCM
  primitives are JDK 7+ (!) only, which became supported by Android
  at 18.
2019-03-21 11:19:06 -07:00
Greyson Parrelli
c646316a97 Block typing indicators from blocked contacts. 2019-03-19 09:39:19 -07:00
Greyson Parrelli
18613e3b6f Remove generic foreground service condition from Job.
I don't think it actually helps at all, meaning it just adds
complexity.

Fixes #8677
2019-03-12 11:29:59 -03:00
Greyson Parrelli
a122bb4899 Created new BlobProvider.
One unified place to create blobs for different lifespans.
2019-03-10 15:18:39 -07:00
Greyson Parrelli
a2b6dbda14 Correctly sync Note to Self conversation color. 2019-02-15 14:21:27 -08:00
Greyson Parrelli
a6564f8f84 FCM improvements. 2019-02-15 14:21:23 -08:00
Greyson Parrelli
fe4068afce Don't preview links if your cursor is touching them. 2019-02-14 20:19:07 -08:00
Greyson Parrelli
c2a86fcc74 Sync self-sends to desktop.
Updated UI to show self-conversations as "Note to Self".
2019-02-14 20:19:07 -08:00
Greyson Parrelli
c9a0a66f18 Migrate backup passphrase to be keystore-encrypted when available. 2019-02-14 20:19:06 -08:00
Greyson Parrelli
c364345e1d Add some additional FCM logging. 2019-02-06 00:53:52 -08:00
Greyson Parrelli
d482c60a98 Switch from GCM to FCM. 2019-01-30 16:10:47 -08:00
Greyson Parrelli
c76081d99c Added support for link previews. 2019-01-30 16:10:43 -08:00
Greyson Parrelli
1e534a2a10 Fix group avatars not sending.
Fixes #8547
2019-01-20 12:00:18 -08:00
Greyson Parrelli
e6b4249cf3 Deprecate usage of the signaling key. 2019-01-17 15:37:53 -08:00
Greyson Parrelli
2209ff2272 Use AttachmentUploadJob in PushGroupSendJob. 2019-01-15 12:43:38 -08:00
Greyson Parrelli
5450967d00 Ensure all Workers have a public WorkManager constructor. 2019-01-14 15:15:53 -08:00
Greyson Parrelli
6fa7eca60b Implement new media send flow.
Update our media send flow to allow users to send multiple images/videos
at once. This change includes:

- New in-app media picker flow.
- Ability to caption images and videos.
- Image editing tools are made more prominent in the flow.
- Some fixes to the image editing tools.
2019-01-14 11:25:06 -08:00
Greyson Parrelli
19d5ba5c0e Upload attachments in a separate job. 2019-01-13 19:25:40 -08:00
Greyson Parrelli
038238a333 Allow multiple attachments to download at once.
Not only will this be faster, but it serves as a mitigation
for the times when WorkManager gets 'stuck'.

Fixes #8427
2018-12-06 23:29:55 -08:00
Greyson Parrelli
bfdad2f47c Updated logging. 2018-12-06 12:43:45 -08:00
Greyson Parrelli
f0bfd7224f Handle having a null sender certificate at send time.
Fixes #8425
2018-12-03 13:16:29 -08:00
Greyson Parrelli
d6abf89a7a Filter out typing indicators from ourself. 2018-12-01 09:51:28 -08:00
Greyson Parrelli
81055e61a6 Update WorkManager to 1.0.0-alpha11. 2018-11-27 12:35:41 -08:00
Greyson Parrelli
36b24d0a20 Rotate sender cert at send time if it's expired. 2018-11-26 07:52:59 -08:00
Greyson Parrelli
47a10a0288 Added support for multi-image receive. 2018-11-21 01:55:30 -08:00
Greyson Parrelli
a3411072ba Remove MasterSecret job.
It's no longer necessary.
2018-11-21 01:55:30 -08:00
Greyson Parrelli
776b0e23ae Add support for typing indicators. 2018-11-21 01:55:25 -08:00
Greyson Parrelli
d93bfbf693 Prevent SendJobs from sending already-sent messages.
This is to guard against behavior WorkManager has where it may
re-enqueue a job that has already been completed (if, for instance, it
was preempted).

Fixes #8268
2018-11-14 16:20:55 -08:00
Greyson Parrelli
e7c00a3066 Fix issue where we may oversend SMS messages.
Because SMS sending is split over two jobs, there's no max retry limit
respected if we find out about the failure in SmsSentJob -- it's
requeued as a new job with a fresh attempt counter.

This commit carries a retry count between the two jobs. It also verifies
that we have service before attempting to send a message at all.

Relates to #8268
2018-11-13 15:07:33 -08:00
Greyson Parrelli
78627ecb08 Updated libsignal-service-java to 2.12.1 2018-11-09 12:37:24 -08:00
Greyson Parrelli
bf9582c97e Only set UNRESTRICTED mode if recipients have a non-null verifier.
Otherwise we could send UD messages to people with non-UD linked
devices.
2018-11-06 09:58:45 -08:00
Greyson Parrelli
1ab3d57378 Fix some places where we were using the Android Logger.
We pretty much always want to be using our own logger.
2018-11-06 09:22:25 -08:00
Greyson Parrelli
e31029da89 Update recipient's sealed sender status in more places. 2018-10-31 11:18:35 -07:00
Greyson Parrelli
8c3d50c6dc Ignore messages without content. 2018-10-31 08:26:45 -07:00
Greyson Parrelli
532431b0ad Guard against notifying for errors on non-existent SMS threads.
All of the other send jobs do this already, just didn't do it here.
2018-10-31 08:19:33 -07:00
Greyson Parrelli
2acab563d9 Support for sealed sender - Part 2 2018-10-30 08:48:08 -07:00
Moxie Marlinspike
5f31762220 Support for sealed sender - Part 1 2018-10-30 08:48:08 -07:00
Greyson Parrelli
86e4221182 Use a unique notification icon for backups. 2018-10-27 23:34:18 -07:00
Greyson Parrelli
45e0bb281f Turn MessageRetrievalService into IncomingMessageObserver.
Due to an Android P bug, we basically need to stop calling
startService() in onResume()/onPause(). That means I had to turn
MessageRetrieval service into a singlton instead of a service. I also
moved the offending KeyCachingService calls into static methods that
didn't have to start the service.
2018-10-17 13:58:47 -07:00
Greyson Parrelli
5219d79e27 Remove unnecessary start of KeyCachingService. 2018-10-11 09:55:46 -07:00
Greyson Parrelli
1b736e9e04 Ensure notifications are processed after receiving GCM message.
It's unreliable to run these tasks on WorkManager, as there's no
scheduling guarantees.
2018-10-08 10:00:15 -07:00
Greyson Parrelli
1c197ad93d Reset attachment transfer state if auto-download requirements are not met. 2018-10-07 14:21:33 -07:00
Greyson Parrelli
e4b56d4e40 Show foreground notification for jobs when network is restricted.
Occasionally a job may be run when the app is in a network-restricted
mode, like a form of doze. When this happens, jobs can timeout due to
lack of network access, causing a cascade of job delays. This is
particularly bad in the case of message retrieval.

To prevent this, if a job that normally requires network detects that no
network is available when running, then we start a foreground
notification.
2018-10-03 10:00:42 -07:00
Greyson Parrelli
444e01deae Improve key presence checking in SafeData.
This isn't a perfect check either, but it should be safer and more
consistent than using static "invalid values".
2018-10-02 12:31:12 -07:00
Greyson Parrelli
cfa13867e5 Allow null for profileAvatar in RetrieveProfileAvatarJob. 2018-10-02 08:43:18 -07:00
Greyson Parrelli
87e6aa48bb Schedule jobs with WorkManager.
Should help solve most of our pressing targetSdk=26 migration issues.
2018-10-01 12:12:50 -07:00
Greyson Parrelli
d10a44f8eb Suppress some noisy logs. 2018-10-01 12:12:50 -07:00
Greyson Parrelli
e9a38bab1e Turned SingleUseBlobProvider into MemoryBlobProvider.
Keep the single-use behavior, but allow the creation of multi-use memory
blobs that can be deleted when we're done with them. Will help out with
having URI's for temporary images during the camera capture flow.
2018-09-27 10:35:56 -07:00
Greyson Parrelli
6eb8693546 Don't block messages from unknown groups.
We were incorrectly considering unknown groups to have been "left".
2018-09-25 10:00:14 -07:00
Greyson Parrelli
45c4eafbd7 Add the ability to block groups.
This also fixes the situation where we block group-leave messages,
preventing blocked contacts from leaving groups.

Fixes #7970

Also, this forced us to upgrade libsignal-service, which fixes the
websocket timeout issues. Thanks to @dpapavas!

Fixes #6644
2018-09-18 15:26:50 -07:00
Greyson Parrelli
7c5e1db6a2 Fix NPE in MultiDeviceContactUpdateJob.
Fixes #8180
2018-09-07 17:52:50 -07:00
Greyson Parrelli
e9b85a10a6 Add per-contact notification channels.
Fixes #8119
Fixes #8121
Fixes #8122
2018-08-17 15:51:01 -07:00
Greyson Parrelli
13c72779af Visually note quotes for messages you don't have.
We will now show a small footer under quotes for messages that you
don't have locally.

Also fixes #7850
2018-08-13 18:38:59 -04:00
Greyson Parrelli
dbd42c4af2 Add notification channel support.
Bucket our notifications into channels. Required to target API 26.
2018-08-13 18:38:53 -04:00
Greyson Parrelli
d0db6aa509 Added more logging around message sending and attachment downloads. 2018-08-06 10:50:06 -04:00
Greyson Parrelli
43068e0613 Reduce usage of Log.w() 2018-08-06 10:50:06 -04:00
Greyson Parrelli
a498176043 Switch logs to use new Log class. 2018-08-06 10:50:06 -04:00
Greyson Parrelli
d42cecc32a Fix timer issue with sync messages from desktop.
Related to #8068
2018-08-03 14:08:16 -04:00
Greyson Parrelli
bf692e8da3 Throttle background contact syncs to once every 6 hours.
Unfortunately, there's apps out there that trigger contact changes
very frequently. Because we listen to the system for contact
changes to tell us when to sync, that could result in us sending
an abundance of contact syncs to linked desktop instances.

This throttles contact sync requests using the following methodology:

- By default, throttle contact syncs to 6 hrs while the app is
  backgrounded.
- If a sync is throttled in the background, we set a dirty flag and
  will execute the sync the next time the app is foregrounded.
- Syncs explicitly requested by desktop are never throttled.
2018-07-17 12:06:50 -07:00
Greyson Parrelli
845fcf0864 Remove ability to set group conversation colors (for now). 2018-07-17 09:54:13 -07:00
Greyson Parrelli
24b062d8dd Improve the look of message bubbles. 2018-07-17 09:53:52 -07:00
Greyson Parrelli
b02dda405c Use NetworkBackoffRequirement for group messages. 2018-07-12 10:59:10 -07:00
Greyson Parrelli
18756aedf6 Remove the ability to save backups to the external SD card.
The directory we were previously saving backups to on the external SD
card is actually deleted upon app uninstall and/or clearing the app's
data. There's also no reliable way to write to the root of an external
SD card (that isn't comically inconvenient), so for now it's safer if we
just move back to getting the regular 'ol standard external storage
directory (which is likely internal storage, despite its name).

Fixes #7845
2018-06-29 14:10:45 -07:00
Greyson Parrelli
b39a7ac939 Add expiration time to group update requests. 2018-06-22 11:29:16 -07:00
Greyson Parrelli
b5d4cac90a Send/receive expiration times for group updates.
This particularly helps with the bug where people who were newly added
to a group wouldn't receive an expiration timer until the first message
was sent.
2018-06-22 11:01:55 -07:00
Greyson Parrelli
933be54035 Update scheduling of ServiceOutageDetectionJob.
Previously, we were running this job in PushSendJob#onCanceled().
However, with the new retry logic, this won't happen for 24 hours.

Instead, we now schedule the job in PushSendJob#onRetry().
2018-06-22 10:59:53 -07:00
Greyson Parrelli
a50edc3d25 Keep retrying message sends for 24 hours.
Previously, we retried based on a count. Now we've added the ability to
keep retrying for a specified time, using exponential backoff to
throttle attempts.
2018-06-22 10:59:53 -07:00
Greyson Parrelli
42f1baaf61 Imported JobManager as a source dependency.
We have to make some changes, and it's gotten to the point where
maintaining it as a separate library is more hassle than it's worth,
especially with Google releasing WorkManager as the preferred job
scheduling library.
2018-06-22 10:59:53 -07:00
Greyson Parrelli
3a85c966d0 Fix false-positive outage detection.
Turns out that there's some weird quasi-state when you come out of
airplane mode, that if you do an InetAdress lookup, it returns some
weird IPv6-looking garbage address. Going to retry in that scenario
instead of assuming an outage.
2018-06-20 13:24:33 -07:00
Greyson Parrelli
2c17b54ef9 Show a banner in the event of a service outage.
We will now determine if there has been a service outage and render a
banner at the top of the conversation list if we detect that there has
been one.
2018-06-18 14:32:45 -07:00
Greyson Parrelli
30be732ae8 Don't auto-download attachments from unknown contacts. 2018-06-11 10:47:27 -07:00
Moxie Marlinspike
70c2a863cc Correctly store backup
Fixes #7831
2018-05-24 09:57:16 -07:00
Greyson Parrelli
54dbffaf30 Added ability to share contacts.
The "contact" option in the attachments tray now brings you through an
optimized contact sharing flow, allowing you to select specific fields
to share. The contact is then presented as a special message type,
allowing you to interact with the card to add the contact to your system
contacts, invite them to signal, initiate a signal message, etc.
2018-05-21 15:45:22 -04:00
Moxie Marlinspike
6c1a1fb9ad Use cache directory on removable storage for backups if present
Fixes #7692
2018-05-21 15:45:22 -04:00
Moxie Marlinspike
a5047cb17b Fix for sender's expiring messages in group with unregistered user
Fixes #7719
2018-05-21 15:45:22 -04:00
Greyson Parrelli
43622e603d Save replies in drafts.
Previously, quotes were not saved to drafts, meaning they would be lost
when leaving the conversation or app. Now, a QuoteId (which represents
the necessary data to restore the QuoteModel) is serialized and stored
in the DraftDatabase.

Fixes #7716
Closes #7729
2018-04-26 09:19:22 -07:00
Nicholas Rizzio
e6f76159b0 Export "creating backup" string
Closes #7656
2018-04-19 17:59:31 -07:00
Greyson Parrelli
fa99e8f0d0 Updated reply-to UI.
All UI components are now properly styled and functioning according to
spec.
2018-04-16 17:33:26 -07:00
Moxie Marlinspike
d567534609 replies 2018-04-16 17:33:26 -07:00
Moxie Marlinspike
3f3d7f549b Make an attempt to store/retrieve backups from removable storage
Fixes #7521
2018-04-16 17:33:26 -07:00
Moxie Marlinspike
9f8b4cf892 Populate incoming attachments with width and height from message 2018-03-31 02:14:02 -07:00
Greyson Parrelli
7e1e666172 Strip EXIF metadata from all JPEG images.
Strip all EXIF metadata from all JPEGs by re-encoding the JPEG. This
will keep all of the necessary visual effects of the tags (by encoding
them directly in the image data) while stripped the EXIF tags
themselves.
2018-03-31 02:14:02 -07:00
Sam Lanning
69f180a5ec Fix some potential integer overflows for expiration time
In a number of locations in the code, there were conversions of message
expiration times from seconds to milliseconds, and then assigned to `long`
contexts. However these conversions were being done as integer multiplication
rather than long multiplication, meaning that there was a potential for
overflows.

Specifically, the maximum value that could be represented before overflowing
was (2^31 / 1000 / 60 / 60 / 24) days = 24.8 days (< 1 month). Luckily the
current allowed timeouts are all less than that value, but this fix would
remove the artificial restriction, effectively allowing values of 1000x greater
(68 years), at least for android.

Related #5775
Closes #7338
2018-03-07 09:55:24 -08:00
Moxie Marlinspike
110d33ddf8 Support for Registration Lock PINs 2018-03-05 16:13:56 -08:00
Moxie Marlinspike
24e573e537 Support for full backup/restore to sdcard 2018-03-05 16:11:49 -08:00
Moxie Marlinspike
bebdbe2aaa Remove master secret requirement from SMS received job
Fixes #7444
2018-02-28 10:45:50 -08:00
Moxie Marlinspike
18aa202695 Really really delay SMS processing until sqlcipher migration completes
Blocking the SMS job on the screen lock isn't enough, since then
the job races against the migration.

Fixes #7390
2018-02-26 14:02:12 -08:00
Moxie Marlinspike
7318236286 Delay processing SMS messages until after sqlcipher migration
When screen lock passphrase is enabled

Fixes #7390
2018-02-21 18:49:52 -08:00
Moxie Marlinspike
9d5d43cf3a Wait to process messages until after migration when screenlocked
Fixes #7390
2018-02-04 11:26:02 -08:00
Moxie Marlinspike
3633d805c8 More MasterSecret cleanup 2018-02-01 19:22:48 -08:00
Moxie Marlinspike
59092e2ec0 No need for an encrypted serializer any longer 2018-02-01 18:33:12 -08:00
Moxie Marlinspike
e6a069af6d Remove unnecessary body model 2018-02-01 18:29:09 -08:00
Moxie Marlinspike
f36b296e2e Migrate from SQLite and ciphertext blobs to SQLCipher + KeyStore 2018-01-30 17:27:05 -08:00
Moxie Marlinspike
e60715587f Update service lib to 2.7.0 2018-01-18 10:01:41 -08:00
Moxie Marlinspike
512dc19471 Fix dynamic permissions problem for MMS messages 2017-12-20 11:21:00 -08:00
Moxie Marlinspike
4de14a5dc1 Only use startForegroundService for initial service construction 2017-12-15 09:45:00 -08:00
Moxie Marlinspike
261d187567 Don't perform multi-device contact update without contact perms 2017-12-08 14:36:36 -08:00
Moxie Marlinspike
27e11e9627 Make sure we have SEND_SMS permission before sending an SMS
Fixes #7246
2017-12-05 11:35:15 -08:00
Moxie Marlinspike
acfc9d75e0 Use startForegroundService instead of startService on Android 8 2017-11-30 10:26:41 -08:00
Moxie Marlinspike
7a5846a6d4 Move more system contact info into recipient database
1) Move contact URI, contact photo URI, and custom label
   into recipient database, so there are no longer any
   contact DB queries during Recipient object loading.

2) Use a SoftHashMap so that any referenced Recipient objects
   can't get kicked out of the cache.

3) Don't load Recipient objects through the provider during sync.
   This was a super expensive thing to do, and blew up the cache.

4) Only apply changes to Recipient objects during sync if they
   are in the cache. Otherwise, there should be no outstanding
   references, and the changes are fine going exclusively to
   the DB.
2017-11-30 10:26:41 -08:00
Moxie Marlinspike
64c8b4b2ef Support for selective permissions 2017-11-30 10:26:41 -08:00
Moxie Marlinspike
f855e161d9 Ensure notifications for new users won't be generated first fetch 2017-11-30 10:26:41 -08:00
haffenloher
3df9112cf8 Fix synced sent media messages expiring too fast
Fixes #6928
Closes #7135
2017-11-01 15:56:46 -07:00
Moxie Marlinspike
6d88710a88 Update to libsignal-service 2.6.11
// FREEBIE
2017-11-01 15:56:31 -07:00
Moxie Marlinspike
b80408bcb4 Use Glide for all contact photo caching
// FREEBIE
2017-10-11 17:47:12 -07:00
Moxie Marlinspike
2c1337b33e Make early receipts work in group messages
For both conversation item view and message details view

// FREEBIE
2017-10-02 14:54:55 -07:00
Moxie Marlinspike
856a4d2860 Process configuration request messages
// FREEBIE
2017-10-02 12:39:44 -07:00
Moxie Marlinspike
285947eb66 Show per-member delivery/read status on message info in groups
// FREEBIE
2017-10-01 22:36:52 -07:00
Moxie Marlinspike
d0e781ccb4 Sync read receipt configuration to sibling devices
// FREEBIE
2017-10-01 22:36:52 -07:00
Moxie Marlinspike
cb9bc9659b Support for read receipts
// FREEBIE
2017-10-01 22:36:52 -07:00
Moxie Marlinspike
b7109e9ebb Fix for NPE if MMS notification has no transaction ID
// FREEBIE
2017-09-13 16:38:02 -07:00
Moxie Marlinspike
93395c3ff4 Include own profile key in normal contact sync
// FREEBIE
2017-09-12 22:49:30 -07:00
Moxie Marlinspike
08948fe05a Don't create groups for 1:1 MMS conversations
Fixes #6947
// FREEBIE
2017-09-10 11:13:53 -07:00
Moxie Marlinspike
989ea4042c MMS group includes the sender
Fixes #6942
// FREEBIE
2017-09-08 11:19:57 -07:00
Moxie Marlinspike
962fb60ffb Don't synchronize MMS groups to sibling devices
Fixes #6934
// FREEBIE
2017-09-07 11:12:57 -07:00
Moxie Marlinspike
2add02c62f Add splash screen for setting profiles
// FREEBIE
2017-09-03 19:45:43 -07:00
Moxie Marlinspike
3e3ae5f865 Adjust profile key sharing based on sync messages
// FREEBIE
2017-08-28 17:57:07 -07:00
Moxie Marlinspike
d0cd2621ca Only process messages if a body is present
// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
51c1e4485f Support for profile key syncing to sibling devices
// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
64ad9ec9dd Add group profile sharing logic
// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
f17af19d09 Access all RecipientDatabase settings directly from Recipient
// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
d1790dfe17 Rename RecipientPreferences -> RecipientSettings
// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
8e6ca53023 Rename RecipientPreferencesDatabase -> RecipientDatabase
// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
6924f0519e No need for a RecipientFactory any longer
// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
5942e93a33 Share profile key when initiating a conversation
// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
df99deb480 Insert profile creation into registration flow, fix capture
// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
77a216b705 Support for retrieving and storing profile information
Initial support for sharing profile keys

// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
1893047a78 Profile creation activity
// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
da94fd5f9e Join group information into conversation list query
// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
5a5e47f2df Move "directory" information into RecipientPreferencesDatabase
// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
375207f073 Switch MMS groups to use the group database infrastructure
Eliminate the concept of 'Recipients' (plural). There is now just
a 'Recipient', which contains an Address that is either an individual
or a group ID.

MMS groups now exist as part of the group database, just like push
groups.

// FREEBIE
2017-08-28 10:30:50 -07:00
Moxie Marlinspike
422b4c345b Catch IllegalArgumentException thrown internally on some devices
// FREEBIE
2017-08-10 12:17:05 -07:00
Moxie Marlinspike
25a30d63a5 A blocked contact doesn't necessarily have to be a number
// FREEBIE
2017-08-07 12:27:34 -07:00
Moxie Marlinspike
7f46e99f9c Use SIM country code when registered number is unavailable
Convert directory operations to Addresses

Fixes #6845
// FREEBIE
2017-08-02 12:51:46 -07:00
Moxie Marlinspike
4229c21bdc Fix NPE on contact update request
Fixes #6840

// FREEBIE
2017-08-01 08:57:26 -07:00
Moxie Marlinspike
737810475e Remove the Canonical Address Database
This was a holdover from Signal's origins as a pure SMS app.
It causes problems, depends on undefined device specific behavior,
and should no longer be necessary now that we have all the
information we need to E164 all numbers.

// FREEBIE
2017-07-31 12:02:29 -07:00
Moxie Marlinspike
5be246ec8f Fix NPE for SMS pdus that could potentially be null
// FREEBIE
2017-07-21 16:11:55 -07:00
Moxie Marlinspike
82b5b35d3b Eliminate MediaNetworkRequirement style attachment job handling
// FREEBIE
2017-07-21 15:59:27 -07:00
Moxie Marlinspike
2c4c0f1349 Archive sessions and generate new registration id on re-register
Fixes #6703
// FREEBIE
2017-07-05 13:13:53 -07:00
Moxie Marlinspike
074e46b2d9 Enable verification syncing
// FREEBIE
2017-06-23 13:59:06 -07:00
Moxie Marlinspike
a0e23612d4 We need to disable this until push notifications contain more info
This could be a sync message, delivery receipt, or some other
message that isn't user-visible. The push notification content
would need to indicate whether that's the case in order to be
able to accurately display a notification

// FREEBIE
2017-06-20 10:57:11 -07:00
Moxie Marlinspike
0f6823d37e Null check just in case the profile comes back empty
// FREEBIE
2017-06-14 09:35:32 -07:00
Moxie Marlinspike
1eccc07673 Temporarily disable synchronization messages
Until desktop catches up

// FREEBIE
2017-06-12 09:47:58 -07:00
Moxie Marlinspike
76c28cfa7a Add support for SN verification
// FREEBIE
2017-06-09 19:58:01 -07:00
Moxie Marlinspike
711740d156 Update to libsignal-service 2.5.10
// FREEBIE
2017-06-02 09:49:29 -07:00
Moxie Marlinspike
b50a3fa2b8 Actually handle busy signal correctly
// FREEBIE
2017-06-01 13:11:48 -07:00
Moxie Marlinspike
d413b80b15 Canonicalize number when retrieving profile
// FREEBIE
2017-05-31 14:51:48 -07:00
Moxie Marlinspike
73410f64b5 Display a notification when unable retrieve messages for push
Fixes #6684
// FREEBIE
2017-05-31 14:51:48 -07:00
Moxie Marlinspike
cd55feb2b9 Update signal-service to 2.5.9
// FREEBIE
2017-05-31 14:51:48 -07:00
Moxie Marlinspike
d507756821 Some identity key handling changes
1) Prefetch identity keys when possible

2) Always accept prefetched keys or keys from incoming messages

3) Block sending only if it's a recent change, or if always
   block is enabled

// FREEBIE
2017-05-31 14:51:48 -07:00
Moxie Marlinspike
4509077338 Lollipop MMS API doesn't seem to work reliably until L_MR1
Fixes #6663
Fixes #6668
// FREEBIE
2017-05-24 10:52:08 -07:00
Moxie Marlinspike
b78c05e70b Keep track of when audio attachments are voice notes
// FREEBIE
2017-05-11 22:46:35 -07:00
Moxie Marlinspike
1c8c6d5f85 Be sure to canonicalize numbers when updating groups
// FREEBIE
2017-05-09 17:46:07 -07:00
Moxie Marlinspike
51d6144591 Significant MMS changes
1) Remove all our PDU code and switch to the PDU code from the
   klinker library

2) Switch to using the system Lollipop MMS library by default,
   and falling back to our own custom library if that fails.

3) Format SMIL differently, using code from klinker instead of
   what we've pieced together.

4) Pull per-carrier MMS media constraints from the XML config
   files in the klinker library, instead of hardcoding it at 280kb.

Hopefully this is an improvement, but given that MMS is involved,
it will probably make things worse instead.
2017-05-08 18:14:55 -07:00
Moxie Marlinspike
cb670d6783 Improve UI send latency
// FREEBIE
2017-04-26 10:27:30 -07:00
Moxie Marlinspike
438a78ed30 Switch jobs with network requirement to timed wakelock
// FREEBIE
2017-04-21 23:05:59 -07:00
Moxie Marlinspike
92ea7549d4 Make UpdateApkJob use a timed wakelock
Fixes #6514
// FREEBIE
2017-04-10 09:25:52 -07:00
Moxie Marlinspike
f67eb5f9f3 Support for receiving arbitrary attachment types
// FREEBIE
2017-03-29 18:17:34 -07:00
Moxie Marlinspike
0d11b3dd26 Lets limit GCM refresh to every 6hrs, and only retry once
// FREEBIE
2017-03-17 10:40:34 -07:00
Benedikt Constantin Radtke
742b54f32d fix ContactUpdates for non-e164 contacts
convert every number to e164 before sending it to slaves/siblings.

Closes #6310
2017-03-16 14:25:47 -07:00
Paride Legovini
1c9715f700 More RedPhone cleanup
Closes #6393
// FREEBIE
2017-03-15 16:59:46 -07:00
Moxie Marlinspike
a8366387ab Fix the build
// FREEBIE
2017-03-14 15:47:08 -07:00
haffenloher
66c9fd44df Honor synced end session messages
Fixes #5174
Closes #5178
2017-03-14 14:07:18 -07:00
Moxie Marlinspike
94964474b2 So long redphone
// FREEBIE
2017-03-14 13:24:24 -07:00
Moxie Marlinspike
2f46c6ca1f Don't redisplay notifications after they have been dismissed
Fixes #5751
Fixes #6218
// FREEBIE
2017-03-14 10:09:24 -07:00
Moxie Marlinspike
bb5e7db57e We don't need to refresh attributes in redphone any longer
// FREEBIE
2017-03-13 11:50:10 -07:00
Moxie Marlinspike
cbba8c0d76 Update signal-service
// FREEBIE
2017-03-09 17:31:03 -08:00
Moxie Marlinspike
b110c8a2cb Reregister GCM on every app start
Fixes #5531
// FREEBIE
2017-03-06 11:50:51 -08:00
Moxie Marlinspike
9b8719e2d5 Support for website distribution build with auto-updating APK
// FREEBIE
2017-02-27 23:53:36 -08:00
Moxie Marlinspike
79e925051a Support for attachment digests
// FREEBIE
2017-02-26 11:16:01 -08:00
Moxie Marlinspike
8cd50d1e82 Update last seen state on desktop sync send
// FREEBIE
2017-02-22 15:05:35 -08:00
Moxie Marlinspike
1669731329 Support for using Signal without Play Services
This is now possible with beta calling, so non-GCM users are a
part of beta calling by default.

// FREEBIE
2017-02-20 12:00:03 -08:00
Moxie Marlinspike
1b1470aae2 Upgrade to EventBus 3.X
// FREEBIE
2017-02-19 12:29:33 -08:00
Moxie Marlinspike
d2eebbc55a Little bit of extra SmsListener logging
Related #5253
// FREEBIE
2017-02-19 12:29:33 -08:00
haffenloher
9395f7faa0 Correct PushGroupUpdateJob's TAG
Closes #6166

// FREEBIE
2017-02-19 12:29:33 -08:00
Benedikt Constantin Radtke
85aa5c5b97 use canonical number when sending blocked updates
MultiDeviceBlockedUpdates now send e164 numbers instead
 of localized ones.

Fixes #6093
Closes #6109
// FREEBIE
2017-02-01 13:55:52 -08:00
Moxie Marlinspike
ea0945d406 Beta support for webrtc video and voice calling
// FREEBIE
2017-02-01 13:55:52 -08:00
Moxie Marlinspike
7e51d61c79 Ignore duplicate signal messages
Fixes #5579

// FREEBIE
2017-01-22 14:47:02 -08:00
Moxie Marlinspike
cb23e3a930 Untrusted identity is not always a legacy message content
Closes #5924
Fixes #5922
// FREEBIE
2017-01-12 10:33:23 -08:00
Moxie Marlinspike
bb5dcb7131 Start increasing frequency of signed prekey rotation
// FREEBIE
2017-01-06 09:19:58 -08:00
Benedikt Constantin Radtke
a6488b3652 fix zero length attachments crashing signal
Fixes #5331
Closes #5926
2017-01-02 17:17:48 -08:00
Moxie Marlinspike
cdf3a849e9 Reduce DB updates on send path, move support SDK up to 24
// FREEBIE
2017-01-02 17:17:48 -08:00
Moxie Marlinspike
f3f2f29b23 Fix avatar download crash bug
Fixes #5980
// FREEBIE
2016-12-21 09:58:45 -08:00
Moxie Marlinspike
541718fd11 Support for censorship circumvention in Egypt and UAE
// FREEBIE
2016-12-20 09:55:52 -08:00
Moxie Marlinspike
f871d83e68 No need to run this job on install
// FREEBIE
2016-12-16 09:10:44 -08:00
Moxie Marlinspike
01bc2ebde4 Don't print safety number changes in inactive groups
Fixes #5930
// FREEBIE
2016-12-14 16:20:09 -08:00
Benedikt Constantin Radtke
d9ff5b00b7 fix NPE in PushGroupUpdateJob
Fixes #5919
Closes #5921
// FREEBIE
2016-12-04 18:06:25 -08:00
Moxie Marlinspike
cf01959e16 Support recovering forgotten/unknown group info from sender
Closes #5876
// FREEBIE
2016-12-01 10:34:47 -08:00
Niklas Wenzel
0d493a3af9 Get the automated tests up and running again
* Fix the build.gradle file
* Use the correct VisibleForTesting class
* Fix the Android test setUp() logic
* Enable a test in DeliveryReceiptJobTest.java where the @Test anotation was missing

It should be noted that the tests in AttachmentDatabaseTest.java fail.

Fixes #3474
Closes #5882
2016-11-24 08:13:46 -08:00
Moxie Marlinspike
3787551878 Squelch notifications for active desktop converastions
Additionally, limit audible notifications to once every 2 seconds.

// FREEBIE

Fixes #4905
Fixes #3165
Closes #5813
2016-11-24 08:09:34 -08:00
Moxie Marlinspike
0abe56171a Enable non-blocking safety number changes
// FREEBIE
2016-11-11 19:07:35 -08:00
Moxie Marlinspike
8d44a145f0 Start expiration timer when marked read from notification
// FREEBIE
2016-10-10 11:13:37 -07:00
Moxie Marlinspike
7d1c5a0d40 Don't transmit SMS contact information to multi-device on change
Fixes #5710

// FREEBIE
2016-10-05 16:57:52 -07:00
Moxie Marlinspike
5ed1c9c72b Fix for expiration update sync sent messages
// FREEBIE
2016-10-03 12:48:30 -07:00
Christian Ascheberg
314dd9181c Fix timer update group notification expiry
Closes #5727
// FREEBIE
2016-10-02 22:43:21 -07:00
Moxie Marlinspike
68b48ebe00 Start disappearing message timer on read sync messages
Fixes #5733
// FREEBIE
2016-10-02 12:08:30 -07:00
Moxie Marlinspike
848a25664b Make fingerprint changes optionally non-blocking
Also complete the rename from "identity" to "safety numbers."

// FREEBIE
2016-09-25 14:27:40 -07:00
Moxie Marlinspike
cbbe25c852 Fix contact update NPE
Fixes #5704
// FREEBIE
2016-09-19 23:25:15 -07:00
Moxie Marlinspike
32f5bd5336 Support for syncing contact colors and block lists
Closes #5638
// FREEBIE
2016-09-14 16:37:28 -07:00
FeuRenard
792d4a5939 Resize group images
Fixes #5461
Closes #5597

// FREEBIE
2016-09-01 12:29:11 -07:00
Moxie Marlinspike
d7e4928f22 Support for disappearing messages
// FREEBIE
2016-08-28 17:03:23 -07:00
Moxie Marlinspike
7b589c4300 TextSecure is now SignalService
// FREEBIE
2016-03-24 14:05:56 -07:00
haffenloher
021942fd43 Don't issue errors when group members unregister
Fixes #2408
Fixes #4550
Closes #5318

// FREEBIE
2016-03-09 16:34:25 -08:00
Moxie Marlinspike
08e2221dc0 Support for synchronizing read state to/from desktop
// FREEBIE
2016-02-19 17:07:41 -08:00
Moxie Marlinspike
03efe02e65 Add active status to group multi-device sync messages
// FREEBIE
2016-02-18 17:52:01 -08:00
Moxie Marlinspike
6da86e482d Support for dual-sim SMS/MMS functionality
Allow source selection for sending SMS/MMS, and display the
SIM that received SMS/MMS.

Fixes #555
Closes #5199
// FREEBIE
2016-02-09 16:53:15 -08:00
Moxie Marlinspike
4a261bcf68 Check result of bitmap size operation for failure
Fixes #5046
// FREEBIE
2016-01-30 15:22:55 -08:00
Colin Snover
50c432aaf0 Strip separators prior to validating non-email SMS recipients
Refs #1516. Refs #3099. Refs #4833.
Closes #4861
2015-12-11 23:11:35 -08:00
Moxie Marlinspike
bde838d35a Let's take this SMS number cleaning thing to its logical extreme
Fixes #4833
// FREEBIE
2015-12-10 18:49:58 -08:00
Moxie Marlinspike
e32736359b Move group message to group after accepting new identity key
Fixes #2739
// FREEBIE
2015-12-10 05:04:03 -08:00
Moxie Marlinspike
371ef3ce95 Strip whitespace in addition to parentheses for outgoing SMS
Fixes #4833
// FREEBIE
2015-12-10 05:04:03 -08:00
Christian Ascheberg
4696837f2f warn user before build expires
Closes #4322
// FREEBIE
2015-12-10 05:04:03 -08:00
Geonu Kang
8269047c88 Update attachment content type when updating attachment data
Fixes #4687
Closes #4688
2015-12-02 09:45:57 -08:00
Moxie Marlinspike
073be6696b Mark threads as read when we get an outgoing sync message
// FREEBIE
2015-11-26 07:24:57 -08:00
Jake McGinty
e51e5cdfd4 fail faster in FileNotFoundException case
Fixes #3053
Closes #4499
// FREEBIE
2015-11-12 15:20:17 -08:00
Moxie Marlinspike
b136fed6f7 Update contact DB on incoming messages
When we receive a Signal message from a previously unregistered
user, reflect that in the contact DB.

Fixes #3949
Closes #4492
// FREEBIE
2015-11-12 15:20:16 -08:00
Moxie Marlinspike
b5b564cfe1 Make sure the number we add canonicalizes to the number we know.
Fixes #4406
// FREEBIE
2015-11-06 10:50:47 -08:00
Stefan Seide
e808ae0ddc remove brackets from recipient numbers as not allowed for dialing
Closes #3450
2015-11-05 10:07:52 -08:00
Moxie Marlinspike
004a87eba9 Lower SMS retry count to 15
Closes #4296
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
5b6f49c993 Switch RedPhone view<->service interaction to use event bus
Fixes #4234
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
d0e852f19f Retry on network failures during media message sends.
Fixes #4332
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
8d82033855 Notify when contacts join Signal
Closes #4314
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
751fa21f60 Ignore envelopes with unknown type
// FREEBIE
2015-11-04 17:56:19 -08:00
Moxie Marlinspike
11a93fabe5 Synchronize with paired devices when a contact changes.
// FREEBIE
2015-11-04 17:56:19 -08:00
Jake McGinty
758b306527 really fix crash from incorrect send job
Closes #4246
// FREEBIE
2015-10-26 11:44:45 -07:00
Moxie Marlinspike
a64dba8a7e Correctly format numbers in outgoing MMS
// FREEBIE
2015-10-24 18:36:03 -07:00
Moxie Marlinspike
c258b4c7aa Expand MMS-specific queries, properly parse incoming MMS.
// FREEBIE
2015-10-24 09:40:04 -07:00