2269 Commits

Author SHA1 Message Date
Greyson Parrelli
5f99470226 Allow searching for words with apostrophes.
Previously, because apostrophes were 'banned' characters, searching for
them wouldn't work. That meant you couldn't find words like "I'm". Now
we just replace the apostrophe with a space and things "just work"
because of the nature of SQLite tokenization and prefix queries.
2018-06-22 10:59:53 -07:00
Greyson Parrelli
afec9e8cb0 Improve highlighting in search results.
Previously, we didn't support highlighting search results that had
tokens in the middle of the matches, which is a possibility with FTS.
Now we do more robust highlighting, as well as highlight matches in
phone numbers.
2018-06-22 10:59:53 -07:00
Greyson Parrelli
89fd7dda23 Break FTS queries into multiple prefix queries.
Previously, we made each full-text search query a single prefix query.
That means that the query "do c" would turn into "do c*". That means it
would match "do cat" but not "dog cat".

Now, we make each token a prefix query. So "do c" would turn into
"do* c*". That means it would match both "do cat" and "dog cat".
2018-06-22 10:59:53 -07:00
Greyson Parrelli
3563efc7de Update search query results when messages disappear.
Previously, if a message disappeared while looking at it in the search
results, it'd still stick around. Now they'll disappear from the results
in real-time.
2018-06-22 10:59:53 -07:00
Greyson Parrelli
ea4ac9db30 Fixed issue where self-sends didn't auto download.
1) There was an issue where we wouldn't auto-download group syncs.
2) There was another issue where we didn't show the download controls
   for messages you sent yourself.

Fixed #7920
2018-06-22 10:37:07 -07:00
Greyson Parrelli
71a34dac5f Fix backup/import issue with expiring messages.
There was an issue where we were backing up group receipts and attachments
that were for expiring messages (which are already excluded from the backup).

This commit excludes these items from the backup, and for backups made
before this change, this commit also deletes these invalid entries at
the end of the restore process.

We also do a little database migration to cleanup any bad state that may
have been imported in the past.
2018-06-21 19:07:27 -07:00
Greyson Parrelli
61b2da9c8a Fix NPE during busy call. 2018-06-21 18:47:14 -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
fe4ce88439 Revert "Upgrade SQLCipher to respect a max window size."
This reverts commit dace93abb3cd5bf5cf7bd722d688b0ae302a4722.
2018-06-18 16:24:35 -07:00
Greyson Parrelli
542e962be9 Fixed crash when ScribbleView failed to save.
Previously, if an operation failed, we set the result to "null".
However, this was a mistake. Setting the result at all assumes success.
Instead, we need to set an exception so the ListenableFuture knows that
the operation failed.
2018-06-18 14:33:44 -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
0999359454 Improve the image editor.
A variety of improvements to the image editor, such as:

- New, fullscreen styling
- Smoother lines
- Better text and sticker handling
- Improved color picker with a history pallette
- New highlighter tool
2018-06-18 14:32:45 -07:00
Greyson Parrelli
dace93abb3 Upgrade SQLCipher to respect a max window size.
Previously, SQLCipher's memory usage would grow indefinitely, up until
it hit the end of the cursor. We've now switched to a release where the
memory  used by the cursor can be bounded.
2018-06-18 14:32:45 -07:00
Greyson Parrelli
df2c5d38b0 Don't notify new users if there is a pending SQLCipher migration.
If a user is upgrading to use the SQLCipher database (which happened
back in 4.16, so this only applies to relatively dormant users who are
just getting back into the app) and received a new "user X joind signal"
message, then it could screw up the migration. So we're just dropping
these notifications that happen in this narrow window.
2018-06-18 14:32:45 -07:00
Greyson Parrelli
79857b98b3 Fix bug with quoted reply notifications. 2018-06-18 14:08:47 -07:00
Greyson Parrelli
626e6930a5 Fix search header rendering after rotation.
The sticky header cache was keeping views across rotations, causing them
to render incorrectly afterwards. I added a method to invalidate the
header layouts after rotation.

Fixes #7890.
2018-06-14 10:50:21 -07:00
Greyson Parrelli
44f5cc9070 Annotate methods in AttachmentUtil as @WorkerThread. 2018-06-11 11:08:25 -07:00
Greyson Parrelli
30be732ae8 Don't auto-download attachments from unknown contacts. 2018-06-11 10:47:27 -07:00
Greyson Parrelli
2b45b3caa2 Fixed export and restore of FTS tables.
First, FTS index contents do not need to be exported. They will be recreated naturally.

Second, we can't export the secret FTS tables, or SQLite will think it's corrupted.
2018-06-06 20:12:17 -07:00
Greyson Parrelli
b7282589de Fixed issue with backup and restore when creating new tables.
Fixes #7863
2018-06-06 09:07:38 -07:00
Greyson Parrelli
6bc7f2a5a4 Fix NPE in FTS when snippet is null. 2018-06-06 08:08:52 -07:00
Greyson Parrelli
3731e2a74a Fix jumbomoji rendering and EmojiTextView resizing.
Fixed an issue where jumbomoji were not properly being rendered
when using system emoji. Also fixed an issue where the text
content wasn't properly being recalculated when the view is
resized.

Fixes #7875
2018-06-06 07:57:03 -07:00
Greyson Parrelli
f0e5aa312e Allow EmojiTextView to redraw after changing emoji setting.
Also just fixed some minor formatting issues.
2018-05-28 17:20:28 -04:00
Greyson Parrelli
ceafb0d130 Reduce emoji flickering and other ellipsize woes.
1. Switch to using default text rendering if there's no emoji present in
the string.

2. Reduce redudant redraws by skipping of setText() calls for identical
strings.

Together, these two changes should reduce the vast majority of
flickering we see with EmojiTextView ellipsizing.
2018-05-24 13:32:56 -04:00
Moxie Marlinspike
70c2a863cc Correctly store backup
Fixes #7831
2018-05-24 09:57:16 -07:00
Greyson Parrelli
d813275f42 Increase number of recent conversations shown when sharing.
Intended to reduce the pain of #7202.
2018-05-24 10:25:58 -04:00
Greyson Parrelli
5650a02cfb Sort search results exclusively by date.
I think I was initially lured into searching by rank because it gives
the illusion of providing the "best match". However, in practice, FTS
never gives back "bad" matches with low ranks -- all of the results it
returns will contain your query in some form (most commonly a direct
substring, but they do take some liberties if you have multiple tokens
in your queries). Given that, in general, more recent search results are
in fact more relevant, we can sort by date exclusively and get a better
ordering overall.
2018-05-24 09:39:57 -04:00
Greyson Parrelli
0503c9eea5 Prevent replies on action messages.
Fixes #7829
2018-05-23 15:16:42 -04:00
Greyson Parrelli
abae419853 Flatten multiline text snippets in search results.
If a search result snippet spans two lines, we only show the first line.
For the purpose of display, we first remove all newlines in order to
make the full snippet visible.
2018-05-23 14:32:46 -04:00
Greyson Parrelli
71ccbf2a1b Secondarily sort search results by date.
This should help with getting back search results that more closely
match user intention.
2018-05-23 14:17:43 -04:00
Greyson Parrelli
92a64f59a4 Switch search to use the existing header.
Probably best to not try out any possible new design changes just yet.
Let's stick with what we have.
2018-05-23 11:06:07 -04:00
Greyson Parrelli
e189fff856 Fixed some cursor-related bugs in Search. 2018-05-23 08:32:46 -04:00
Greyson Parrelli
e6e8416aec Use correct recipient for message search results.
Previously, we'd always use the recipient of the message record, which
was incorrect for messages sent to groups. Now we always use the
recipient for the matching thread record.

Fixes #7823
2018-05-23 08:22:08 -04:00
Greyson Parrelli
a792a6e6ae Fixed ThumbnailView sizing problems.
Glide will use the dimensions of the target ImageView as the dimensions
for the image it's loading. This caused problems in the case of
ThumbnailView, as we were constantly changing the ImageView dimensions,
meaning Glide may not have the most recent values (it may be called in
between measure calls, for instance).

To solve this, we now will always override the default image dimensions
when we load an image. If no dimensions are present, we will default to
the layout_width and layout_height of the ThumbnailView.

Fixes #7810
2018-05-22 17:03:51 -04:00
Greyson Parrelli
0b1b568893 Fix notifications for replies.
Notifications for replies will no longer display as a "Media Message" if
they do not contain media. Instead, they will just contain the reply
text.

Fixes #7798
2018-05-22 13:12:13 -04:00
Greyson Parrelli
93effc8890 Disable contact sending. 2018-05-21 19:57:50 -04:00
Greyson Parrelli
5d75f11cbc Bump version to 4.20.0. 2018-05-21 17:19:03 -04:00
Greyson Parrelli
0449647cf9 Implemented full-text search.
You can now use the search bar on the conversation list to find
conversations, messages, and contacts.
2018-05-21 16:36:59 -04:00
Greyson Parrelli
c0b75c2ef5 Disable shared contact sending.
Sending shared contacts isn't backwards-compatible, so we want to have a
few releases where receiving is enabled, but not sending. That way, when
we enable sending, most users should be able to properly receive the
shared contact messages.
2018-05-21 15:45:22 -04:00
Greyson Parrelli
ca260a92e3 Convert vCard attachments to Shared Contacts.
When you share a vCard from an external app (like the Contacts app) into
Signal, we'll now convert it to a pretty Shared Contact message and
allow you to choose which fields of the contact you wish to send.
2018-05-21 15:45:22 -04:00
Greyson Parrelli
e6c16cf28d Allow editing of contact names.
Took care to properly format CJK names.
2018-05-21 15:45:22 -04: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
Greyson Parrelli
17dbdbd0a9 Handle quote position task finishing after fragment detaches.
There's a chance that the AsyncTask that retrieves a quoted message's
position could finish after the fragment is detached, which would cause
a crash. I've changed it so if this case occurs, the result is ignored.

Also, I noticed that when searching the message table, if a quote can't
be found, we'd end up traversing the entire table. To prevent this from
taking forever on large message tables, I've limited it to searchin only
what is currently present in the adapter.

Fixes #7756
2018-05-21 15:45:22 -04:00
Greyson Parrelli
ca8fecea9c Clean up camera flipping, handle having missing cameras.
Did a refactor to better organize the camera flipping code. Also, I
wanted to make sure we handle the cases where the user doesn't have two
cameras (or no cameras, for that matter). In these cases, we just don't
show the appropriate buttons.
2018-05-21 15:45:22 -04:00
Niklas Hambüchen
f1c79eaebf Add button to flip camera (front vs rear). Fixes #6279 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
35d158cfee Treat Permissions "not now" as a denial
Fixes #7713
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
Moxie Marlinspike
5006b36e2d Show lock notification immediately after setting is toggled
Fixes #7659
Closes #7678
2018-05-21 15:45:22 -04:00
Greyson Parrelli
102941c18c Fix QuoteView measuring when voice notes are present.
Fixes #7740
2018-04-26 17:41:37 -07:00