Commit graph

142 commits

Author SHA1 Message Date
Rhodey Orbits d8521637bb use Locale from DynamicLanguage for displaying dates
1) fixed DateUtils to use SimpleDateFormat for everything because it respects Locale
2) added getCurrentLocale() method to DynamicLanguage
3) allow PassphraseRequiredActionBarActivity.initFragment() to accept a Locale
4) updated classes that depend on DateUtils to pass down Locale from DynamicLanguage

Fixes #2684
Closes #2725
// FREEBIE
2015-04-23 13:56:31 -05:00
Jake McGinty f42d100f15 Use Glide for loading part thumbnails
Closes #2885

// FREEBIE
2015-04-21 14:27:51 -07:00
Jake McGinty 7aaedf500f fix off-thread UI interactions in ConversationItem
Fixes #2966
Closes #2973

// FREEBIE
2015-04-13 10:35:30 -07:00
Rhodey Orbits 857135aab1 Fix media thumbnail view operation.
An extreme edge case wasn't happening on the UI thread.

Fixes #2800
Closes #2801

// FREEBIE
2015-04-09 12:28:45 -07:00
Jake McGinty 0ff99258ac move routing logic to all activities
Fixes #2239
Closes #27923

// FREEBIE
2015-04-01 10:23:05 -07:00
Jake McGinty 17383ddfe0 fix NPE for incoming failed messages
Fixes #2807
// FREEBIE
2015-03-27 10:37:59 -07:00
agrajaghh 62181a3d7f migrate AlertDialog to material-dialogs
Closes #2743
2015-03-25 11:50:52 -07:00
Moxie Marlinspike 142f84703b Make clickable conversation items batch selectable
Fixes #2679

// FREEBIE
2015-03-16 10:32:39 -07:00
Jake McGinty 71eeb7ca83 Fix ClassCastException for notifications
Resolves #2691
Closes #2692

// FREEBIE
2015-03-15 09:31:21 -07:00
Jake McGinty 13227b6aa5 disable fancy new thumbnail preview
It was causing OOMEs on old devices.
// FREEBIE
2015-03-13 11:30:15 -07:00
Jake McGinty 4185006147 add borderless thumbnails, "bubble" refactor
Closes #2430

// FREEBIE
2015-03-12 18:23:08 -07:00
Moxie Marlinspike a4e18c515c Remove encrypted SMS transport, simplify transport options.
Closes #2647

// FREEBIE
2015-03-12 17:53:38 -07:00
Moxie Marlinspike 9f9293cd61 Pending indicator was not cleared on recycled views.
// FREEBIE
2015-03-09 13:14:39 -07:00
Moxie Marlinspike c05aca19ae Minimal-diff change to fix NPE.
Fixes #2623

// FREEBIE
2015-03-08 11:37:18 -07:00
Moxie Marlinspike 3f93731300 Adapt Conflicts UI to work with single-recipient failures. 2015-02-27 12:26:09 -08:00
Moxie Marlinspike 00d7b5c284 Better UX handling on identity key mismatches.
1) Migrate from GSON to Jackson everywhere.

2) Add support for storing identity key conflicts on message rows.

3) Add limited support for surfacing identity key conflicts in UI.
2015-02-27 12:26:09 -08:00
Sebastian Kürten 79dbf2746f Added new media icons for audio/video
Added icons new icons, deleted an old one.
Using new icons in AudioSlide/VideoSlide.

Closes #2304
2015-02-23 13:13:39 -08:00
Jake McGinty 0fd52ad1fe more succinct relative dates
// FREEBIE
2015-02-06 13:00:21 -08:00
Jake McGinty 62816ee51a rounded ImageView instead of Bitmap, crop-select
// FREEBIE
2015-01-21 17:39:54 -10:00
Moxie Marlinspike ed556fbd3a Support for multi-select in the conversation list.
// FREEBIE

Closes #1601
Closes #2214

Fixes #2188
Fixes #786
2014-12-29 13:54:59 -08:00
Jake McGinty e8b947dfde Pass recipient ids, not recipient objects
Fixes #2233
// FREEBIE
2014-12-22 14:53:28 -08:00
Jake McGinty 07bb07c342 streaming media
// FREEBIE
2014-12-12 18:49:32 -08:00
Bastian Köcher 4a088410ae "add contact" button for unknown contacts
Closes #1551
2014-12-11 18:59:29 -08:00
Lukas Barth e5e5b93884 Add k-9 style avatars to group conversations
Closes #1107
2014-12-11 14:40:44 -08:00
Jake McGinty eaf89735b8 encapsulated delivery icon to separate from lock
and as a bonus some tweaked text sizes and colors
// FREEBIE
2014-11-19 12:56:44 -08:00
Moxie Marlinspike 0d102f76cc Move ListenableFutureTask up to parent. 2014-11-12 15:38:23 -08:00
Moxie Marlinspike cafe03a70a Transition the outbound pipeline to JobManager jobs. 2014-11-12 15:26:25 -08:00
Moxie Marlinspike a3f1d9cdfd Beginning of libtextsecure refactor.
1) Break out appropriate components.

2) Switch the incoming pipeline from SendReceiveService to
   the JobManager.
2014-11-12 15:21:32 -08:00
Jake McGinty ff2ac8a66e refactor ListenableFutureTask and make saves async
// FREEBIE
2014-10-28 02:25:41 -05:00
Jake McGinty 53da1f849a in-app image media preview
// FREEBIE
2014-10-28 00:50:01 -05:00
Jake McGinty 31167d11dd use wildcard media types, don't crash on preview fail
// FREEBIE
2014-10-17 17:59:56 -07:00
Jake McGinty 530ad7bc86 new emoji drawer
// FREEBIE
Closes #1746
2014-07-26 13:35:03 -07:00
Moxie Marlinspike 0d35e2bfa9 Fix the "Tap for X fallback" labels. 2014-06-13 17:48:56 -07:00
Moxie Marlinspike 983bf672cf Fix UI side of broken MMS fallback.
1) Actually tell the SendReceiveService to send the MMS if it is
   one.

2) Display the correct string (SMS vs MMS) in the fallback dialog.
2014-06-13 17:39:29 -07:00
Moxie Marlinspike d51adab76b Use "date sent" as timestamp for push, "date received" for SMS.
The "sent time" is not reliable on SMS messages.  This switches
to using "sent time" by default for push messages, but "received
time" for SMS messages.
2014-06-12 08:59:54 -07:00
Moxie Marlinspike c719a48a2c Move media attachment long-click event to context menu.
Long-click on a media attachment will now bring up the normal
context menu for a ConversationItem long-click, but with the
addition of a "save attachment" option.

This allows users to long-click on messages with media in them
and still see the other contextual menu options.

// FREEBIE
2014-06-11 18:04:14 -07:00
Lukas Barth 7c9282f306 Cache circle cropped photos on Recipient. 2014-06-11 12:33:57 -07:00
Matt Enright 7ceaf59bcc Display send date for incoming messages
Fixes #597.
2014-04-05 14:39:58 -07:00
Jake McGinty d4d684b670 simplified layouts 2014-04-03 09:59:32 -07:00
Jake McGinty 832763f695 UX for unencrypted fallback case 2014-04-02 22:10:51 -07:00
Jake McGinty d827ab1b36 more precise sms controls
// FREEBIE
2014-03-13 20:59:20 -07:00
Jake McGinty 90169e9468 pending messages more accurately conveyed to user 2014-03-03 11:56:54 -08:00
Benjamin Albrecht 0f6c7660cb Use modern icons in info and alert dialogs for ICS+ 2014-03-01 14:42:12 +01:00
Moxie Marlinspike da344a0218 Fix bug with recycled ListItems. 2014-02-23 17:11:10 -08:00
Jake McGinty aab34e491e fix bug where sdk < kitkat is unjustly punished 2014-02-23 16:04:09 -08:00
Jake McGinty 3dd27ed59a push conversation messages are now blue
// FREEBIE
2014-02-23 15:29:07 -08:00
Moxie Marlinspike 125a60290f Correctly handle key conflict resolution for incoming push. 2014-02-22 14:22:12 -08:00
Moxie Marlinspike ccd1691b22 Make 'push' status a type bit on both incoming and outgoing msgs. 2014-02-20 23:00:38 -08:00
Moxie Marlinspike ff238a1ce9 Indicate a message was delivered via push in its delivery status. 2014-02-20 16:14:58 -08:00
Jake McGinty a0cbbd2d21 confirm session abort handler in ConversationItem
// FREEBIE
2014-02-20 11:42:15 -08:00
Moxie Marlinspike 9614dc9055 Refactor group database model and flow.
1) Use existing DB types instead of adding new columns.

2) Store group attributes in message body, like everything else.
2014-02-19 21:07:47 -08:00
Jake McGinty 0688dd0c2c repurpose ImageDivet for avatar, minor lint, fix bitmap decoding
// FREEBIE
2014-02-19 00:01:37 -08:00
Jake McGinty abce678cb4 received group messages aren't processed as "meta" group stuff, oops. 2014-02-17 22:20:43 -08:00
Moxie Marlinspike 18f3314cd2 Fix for no paradigm. 2014-02-17 11:54:39 -08:00
Moxie Marlinspike b9f4fba98a Handle identity key mismatch on outgoing group messages.
Additionally, make the group creation process asynchronous.
2014-02-17 11:43:37 -08:00
Jake McGinty 5810062b25 group action conversation items, tweaks to single contact selection 2014-02-16 21:09:15 -08:00
Moxie Marlinspike e7e5bc0884 Verify identity keys on outgoing messages.
If PreKeyEntity identity key doesn't match local DB, fail
outgoing message and queue "incoming" identity key update
message for manual user approval.
2014-02-16 15:23:49 -08:00
Jake McGinty 8e3aa94a05 group member name tags, group convo iconography, tweaks 2014-02-15 04:21:56 -08:00
Moxie Marlinspike 067799be06 Display group actions and correctly handle group delivery. 2014-02-14 15:59:57 -08:00
Moxie Marlinspike 0ace469d74 Support for multi-device.
1) In addition to the Recipient interface, there is now
   RecipientDevice.  A Recipient can have multiple corresponding
   RecipientDevices.  All addressing is done to a Recipient, but
   crypto sessions and transport delivery are done to
   RecipientDevice.

2) The Push transport handles the discovery and session setup
   of additional Recipient devices.

3) Some internal rejiggering of Groups.
2014-02-02 19:38:06 -08:00
Jake McGinty 28c1c5006b icon, contact list and conversation redesign 2014-01-09 19:06:41 -10:00
Moxie Marlinspike 5c97b1e864 Twiddle the auto initiate 2014-01-06 20:03:16 -08:00
Moxie Marlinspike 073b1f69e3 Rollbacks, v2 sms-transport key exchanges, push identity conflicts.
1) Stop protocol rollbacks.

2) Handle v2 version key exchange messages.

3) Handle identity key conflicts on prekeybundle messages.
2014-01-06 14:35:53 -08:00
Moxie Marlinspike 5e6d39beea Move classes into library 2014-01-06 14:35:53 -08:00
Moxie Marlinspike b8f663b69c Move common crypto classes into TextSecureLibrary.
1) Move all the crypto classes from securesms.crypto.

2) Move all the crypto storage from securesms.database.keys

3) Replace the old imported BC code with spongycastle.
2014-01-06 14:35:51 -08:00
rhodey 2c2a03e5e2 Enhanced MMS configuration prompts and processing.
1) Added a new message status to MmsDatabase to
   signify a pending MMS download which requires
   APN settings.

2) Added a database method to query MMS messages
   based on status.

3) Added login to SendReceiveService for processing
   of MMS pending APN information.

4) Moved all APN/MMS settings into ApnPreferencesActivity
   and transformed PromptApnActivity into a simple
   informational activity.

5) Added logic to check for APN settings on send and
   receive of all MMS (media, group, email) and direct
   user to PromptApnActivity then ApnPreferencesActivity
   if necessary.

6) Vocab/grammar adjustments.
2013-10-20 16:56:34 -07:00
Ruben Pollan 73b1e3f3d4 Set the right extension on saving an attachment 2013-10-13 14:45:04 +02:00
Moxie Marlinspike 71e161c792 Switched to new emoji lookup pattern, added rendering support. 2013-06-28 16:56:30 -07:00
Moxie Marlinspike 5263ac1f1a Theme Support
1) Broke out the UI elements of the major Activites into stylable
   attributes.

2) Created a 'light' and 'dark' theme for the newly stylable attrs.

3) Touched up some of the UI spacing.

4) Implemented dynamic theme switching support.
2013-06-21 12:14:40 -07:00
Moxie Marlinspike 24fc93e9ae Switch to a more heavily TOFU model for identity keys.
1) There is no longer a concept of "verified" or "unverified."
   Only "what we saw last time" and "different from last time."

2) Let's eliminate "verify session," since we're all about
   identity keys now.

3) Mark manually processed key exchanges as processed.
2013-05-23 16:36:24 -07:00
Moxie Marlinspike b99cca8bfa Fix for NPE on failed icon click. 2013-05-17 12:53:16 -07:00
Moxie Marlinspike a362c8755a Don't check for auto-initiation on group threads. 2013-05-06 08:40:56 -07:00
Moxie Marlinspike 723fb4ffdd MMS and Group Messaging Improvements
1) Display the individual sender name in a group conversation.

2) Add an "address" column to MmsDatabase and keep FROM there.

3) Remove all blocking operations from MmsDatabase.Reader path.

4) Strip SMIL and other undisplayable parts from part count.

5) Fix places where messages weren't being correctly decrypted.
2013-05-06 08:40:55 -07:00
Moxie Marlinspike e80882b83b Locally encrypted messages no longer show as ciphertext notifications. 2013-05-06 08:40:55 -07:00
Moxie Marlinspike 7c47ea5cec Make MMS more asynchronous and consistent with new SMS types.
1) We now delay MMS notifications until a payload is received,
   or there's an error downloading the payload.  This makes
   group messages more consistent.

2) All "text" parts of an MMS are combined into a second text
   record, which is stored in the MMS row directly rather than
   as a distinct part.  This allows for immediate text loading,
   which means there's no chance a ConversationItem will resize.

   To do this, we need to include MMS in the big DB migration
   that's already staged for this application update.  It's also
   an "application-level" migration, because we need the MasterSecret
   to do it.

3) On conversation display, all image-based parts now have their
   thumbnails loaded asynchronously.  This allows for smooth-scrolling.
   The thumbnails are also scaled more accurately.
2013-05-06 08:40:55 -07:00
Moxie Marlinspike dd0aecc811 First cut at group messaging refactor. 2013-05-06 08:40:55 -07:00
Moxie Marlinspike 83e260436b Major storage layer refactoring to set the stage for clean GCM.
1) We now try to hand out cursors at a minimum.  There has always been
   a fairly clean insertion layer that handles encrypting message bodies,
   but the process of decrypting message bodies has always been less than
   ideal.  Here we introduce a "Reader" interface that will decrypt message
   bodies when appropriate and return objects that encapsulate record state.

   No more MessageDisplayHelper.  The MmsSmsDatabase interface is also more
   sane.

2) We finally rid ourselves of the technical debt associated with TextSecure's
   initial usage of the default SMS DB.  In that world, we weren't able to use
   anything other than the default "Inbox, Outbox, Sent" types to describe a
   message, and had to overload the message content itself with a set of
   local "prefixes" to describe what it was (encrypted, asymetric encrypted,
   remote encrypted, a key exchange, procssed key exchange), and so on.

   This includes a major schema update that transforms the "type" field into
   a bitmask that describes everything that used to be encoded in a prefix,
   and prefixes have been completely eliminated from the system.

   No more Prefix.java

3) Refactoring of the MultipartMessageHandler code.  It's less of a mess, and
   hopefully more clear as to what's going on.

The next step is to remove what we can from SmsTransportDetails and genericize
that interface for a GCM equivalent.
2013-05-06 08:40:55 -07:00
Moxie Marlinspike 5cb02445e8 Add support for "delivery notifications." Currently SMS-only. 2013-01-06 21:38:36 -08:00
Moxie Marlinspike 83f90ddd4e Display both sent and received time in message details.
1) We record time sent in SMS database (date_sent).

2) We record time received in MMS database (date_received).

3) We union this information correctly in MmsSmsDatabase.
2013-01-06 13:13:14 -08:00
Moxie Marlinspike 61d4192798 Refactor ContactPhotoFactory to handle changing local contact URIs. 2012-12-30 16:42:33 -08:00
Moxie Marlinspike 9939830551 Refactor recipient access.
1) Refactor recipient class to support asynchronous loading operations.

2) Refactor recipient factory to simplify recipient access.

3) Consoliate everything into one recipient provider that is capable of
doing async lookups and intelligent caching.
2012-12-24 08:40:37 -08:00
Moxie Marlinspike 187ec95817 Add collating support for group SMS/MMS messages.
1) When sending an SMS or MMS to multiple recipients, only show one
ConversationItem, but provide statistics on the number of recipients
delivered to.

2) Still break up the messages for secure and insecure messages.
2012-10-29 16:51:42 -07:00
Moxie Marlinspike 3a8d29e279 Major reorganization of view/model interactions.
Mostly, the inheritance graph for MessageRecord/MmsMessageRecord was
all messed up, and each class was overloaded for things it shouldn't
have been.

1) Broke MessageRecord/MmsMessageRecord up into: DisplayRecord, ThreadRecord,
MessageRecord, SmsMessageRecord, NotificationMmsMessageRecord, and
MediaMmsMessageRecord.

2) Updated all the adapters/views to keep pace with that change.
2012-10-28 18:24:21 -07:00
Moxie Marlinspike 0b3e939ac8 Improve support for "me" contact.
1) Add >= ICS profile support (the system-supported "me" contact).

2) Improve <= Gingerbread support for me contact by auto-detecting
contacts that have the same number as the SIM card.

3) Tie in identity key import/export support to the "me" contact.

4) Don't display a "me" selection option in preference if it can
be auto-detected.

5) Refactor out the ContactAccessorNewApi back into the base class.
2012-10-22 19:17:08 -07:00
Moxie Marlinspike bb0ec65744 Include source origin in string key name.
This should help eliminate string duplicates, as well as provide
visibility into where strings in a resource file are being used.
2012-09-19 19:56:04 -07:00
Moxie Marlinspike c6ae07ee5c Turn avatar images in conversations into QuickContactBadge equivalents.
This requires a few changes to Recipient in order to make sure we
have a Contact URI at click time.  While we're at it, let's git rid
of the OldRecipientProvider, which was for pre-2.0 contact stuff
(no longer supported, woohoo!).
2012-09-11 18:23:19 -07:00
Moxie Marlinspike f39b8e5fc8 Fix up whitespace tagging and tag detection prompt.
1) Fix up the whitespace tagging so that it's a little more strict.

2) Don't display whitespace tags that we add to our own messages.

3) Make the tag detection prompt a little more visually pleasing.
2012-09-07 21:21:12 -07:00
Moxie Marlinspike 4c3b7cbe08 Extract TextSecure strings for i18n.
1) Change all instances which use concatenation to build strings
with variables in them to use string formatting instead.

2) Extract all string literals from layouts and menus into strings.xml

3) Extract all string literals from code into strings.xml
2012-09-07 21:19:37 -07:00
Moxie Marlinspike 7883d09573 Fix success/failure status on conversation item. 2012-08-03 17:34:09 -07:00
Moxie Marlinspike 1ff278dc81 Update the key exchange icon look. 2012-07-30 17:15:49 -07:00
Moxie Marlinspike a7cc47d259 Update conversation item style.
1) Don't print sender/recipient name in message body.
2) Do the split conversation icon view.
3) Adjust font sizes and colors.
2012-07-19 19:23:49 -07:00
Moxie Marlinspike bbea3fe1b1 Initial Project Import 2011-12-20 10:20:44 -08:00