Commit Graph

464 Commits (60ed8f297236f24693716207c3589dca462ac83b)

Author SHA1 Message Date
Scott Nonnenberg 74cb808763 New MessageController as the single place for in-memory messages 6 years ago
Scott Nonnenberg b232d6289a Update react-contextmenu to avoid event handler issues un unload 6 years ago
Scott Nonnenberg 3b140d9b51 Update react-contextmenu to avoid event handler issues un unload 6 years ago
Scott Nonnenberg 8c4d90df07 Send long text as an attachment instead of inline
Remove Android length warning

Handle incoming long message attachments

Show long download pending status in message bubble

Fix the width of the smallest spinner

Remove Android length warning from HTML templates
6 years ago
Scott Nonnenberg b3ac1373fa Move left pane entirely to React 6 years ago
Scott Nonnenberg bf904ddd12 On attachment save include date, include album index 6 years ago
Scott Nonnenberg 6ffbc0ac06 Archive Conversation 6 years ago
Scott Nonnenberg 667b2e63f1 Ensure image lightbox is aware of its underlying message changes 6 years ago
Beaudan 9717267b00 Review 6 years ago
Beaudan 14367620d9 lint 6 years ago
Beaudan d0d57ea8c7 Add more functionality to the conversation right click menu, add right click for messages, change some of the ways toasts/confirmation dialogs are created, auto focus text input for nickname, clean up some stuff 6 years ago
Beaudan 5c29c6cb1d Search view now works with deleting contacts as well 6 years ago
Beaudan df93c97b48 Added ability to delete contacts and destroy all sessions with them. Added right click menu to contacts/conversations in list which can block, delete messages and delete contact 6 years ago
Scott Nonnenberg 9afea3ae2b View All Media: Listen for updates to conversation, re-render 6 years ago
Scott Nonnenberg 5b54c9554e Remove groups table, conversation is single source of truth 6 years ago
Scott Nonnenberg 1d2c3ae23c Download attachments in separate queue from message processing 6 years ago
Scott Nonnenberg 858c7e629f Fine-tune linkification technique for link previews 6 years ago
Scott Nonnenberg 462fa712bc Show members: Pull conversation from group table 6 years ago
sachaaaaa 68fe552156 Merge commit '5c8558e293989094693f918a63b672301f1aeb55' into merge_1_21_1
* commit '5c8558e293989094693f918a63b672301f1aeb55':
  v1.21.1
  v1.21.1-beta.1
  Fix: Navigation to message via quote click didn't always work
  mainWindow.close - be ready for null mainWindow
  Ensure that Curve.async points to worker after startWorker call
  Protect against unhandled promises when calling checkForUpdates
  Reenable send when link preview is missing an image

# Conflicts:
#	package.json
6 years ago
Scott Nonnenberg 1a7df91dbc Fix: Navigation to message via quote click didn't always work 6 years ago
sachaaaaa 0417f0ffad
Merge pull request #182 from sachaaaaa/disable_dragndro
Disable drag n drop temporarily
6 years ago
sachaaaaa 72b7f82522 Disable pasting files 6 years ago
sachaaaaa 46533fae0d disable drag n drop temporarily 6 years ago
sachaaaaa a0f67c22da Merge branch 'textsecure/master' into merge_1_21_0
* textsecure/master: (26 commits)
  v1.21.0
  v1.21.0-beta.4
  Dark Theme: Preserve blue background on app loading screen
  Localization updates
  Fix width of audio player when window is very narrow
  A number of small fixes for Link Previews
  Get rid of the white flash when the app starts up (#3083)
  v1.21.0-beta.3
  Lint fixes
  Introduce new language: NB
  Fail over to all numbers in retry if errors don't have numbers
  Use the proper method for pulling attachments off disk for retry
  Fix rendering bug with verified state in updateVerified()
  Update electron-builder and electron-updater
  Ensure that dialog pops up when permissions denied for voice note
  Lint fixes
  Large update to localization strings
  Link Previews
  Ensure that blocked messages are dropped even after sealed sender
  Don't linkify quoted message contents
  ...

# Conflicts:
#	.github/PULL_REQUEST_TEMPLATE.md
#	_locales/cs/messages.json
#	background.html
#	config/default.json
#	index.html
#	js/models/conversations.js
#	js/modules/web_api.js
#	js/settings_start.js
#	js/views/conversation_view.js
#	js/views/settings_view.js
#	package.json
#	protos/SignalService.proto
#	stylesheets/_index.scss
#	stylesheets/_settings.scss
6 years ago
Mikunj ddfc99a461 Added online indicator to conversation header. 6 years ago
Scott Nonnenberg 813924685e Link Previews 6 years ago
Scott Nonnenberg 0eb4760349 Show contact name on 'send anyway' dialog instead of $name$
Partial fix for #1914
6 years ago
Mikunj 1a15ec9c15 Merge commit signal/master into signal-1.20 6 years ago
Scott Nonnenberg 0ba25ff8d5 Multiple images can now be selected in file chooser and drag/drop 6 years ago
Scott Nonnenberg 1e4b562922 Multiple images can now be selected in file chooser and drag/drop 6 years ago
Mikunj 6bd2d3962e Linted files 6 years ago
Scott Nonnenberg 74bbdb88a5 Lint fixes 6 years ago
Scott Nonnenberg 16a821645f Preserve scroll position on toggle emoji panel, add attachment 6 years ago
Scott Nonnenberg 0de54e125c Improve caption editor usability, new 'add attachment' affordance 6 years ago
Scott Nonnenberg 7db7a3ad44 Preserve scroll position when adding/removing staged quote 6 years ago
Scott Nonnenberg b08c10a547 FileInputView: Event on attachment change to hide/show microphone 6 years ago
Scott Nonnenberg dc9f9dabfd Ensure that caption is shown even for single-image message 6 years ago
Scott Nonnenberg 985b1d6aa6 New staged attachments UI, multiple image attachments per message 6 years ago
Herohtar 0b60af1c84 Don't compare a numeric value with a string when using the identity operator (#2989)
Fix comparison for emoji injection at cursor location
6 years ago
Mikunj cbb62f4a71 Added tsx files to grunt watch.
Fixed minor bug in conversation view.
6 years ago
Mikunj a0b814bf7c limit max message length to 2000 characters.
Set task time limit to 3 minutes.
6 years ago
sachaaaaa 27674513ba
Merge branch 'development' into signal-v1.19 6 years ago
Mikunj a2f12ca18e Added option to copy conversation public key. 6 years ago
Mikunj 654b0dac84 Merge signal-master. 6 years ago
Scott Nonnenberg 3851bf351f Throttle typing events, fix profile logging, fix group typing 7 years ago
Beaudan 051e4dd22c XAnother big refactor to tie conversation UI logic to the friendRequestStatus variable 7 years ago
Mikunj d2c9def028 Fix code comment. 7 years ago
Mikunj d6d71cb51e Show all contacts. 7 years ago
sachaaaaa f900fc496d
Merge pull request #61 from Mikunj/feature/profile-nickname
Added profile sharing and setting nicknames.
7 years ago
Beaudan fa63ce5ade Review changes 7 years ago
Beaudan 35c89ea4d9 Big refactor, prekeybundle moved back to a content message 7 years ago
Mikunj 14ee7fec65 Moved and nicknames into conversations. 7 years ago
Mikunj 449f44cc5a Added changing user nicknames. 7 years ago
Scott Nonnenberg 79a861a870 Typing Indicators 7 years ago
Scott Nonnenberg 99252702e1 Support receiving multiple images in one messages 7 years ago
sachaaaaa 05602b3281 Fix accessing $messageField before assignment 7 years ago
sachaaaaa dbdd52b4eb
Merge pull request #50 from Mikunj/fix/friend-request
Friend request fixes
7 years ago
Mikunj 4fd709be35 Removed unused state. 7 years ago
Mikunj 7d8719f250 Fix incoming friend request messages being deleted.
Set pending outgoing friend requests to declined if we receive an incoming friend request.
Fix text input not blocking.
7 years ago
Mikunj 110387508f UI fixes. 7 years ago
Mikunj ae2e2fa2ae Updated UI in conversation to support user blocking behaviour. 7 years ago
sachaaaaa 4b9fcb98d4 Linting and other housekeeping stuff 7 years ago
sachaaaaa 143b1e883d
Merge pull request #17 from sachaaaaa/lock_input_friend_request
Lock input after friend request is sent
7 years ago
sachaaaaa 9370e2b74a Merge branch 'master' of https://github.com/signalapp/Signal-Desktop into development
* 'master' of https://github.com/signalapp/Signal-Desktop: (38 commits)
  v1.17.0
  v1.17.0-beta.4
  Ensure that blue group avatars are preserved in dark theme
  Android theme: Incoming quotes take color from containing message
  Conversations have blue avatar backgrounds if no image provided
  Fix lint errors
  Add ca language
  inboxView: Ensure Conversation exists for our own number
  Ensure that file is not attached if we've filtered it
  v1.17.0-beta.3
  Localization updates
  v1.16.3
  Lint fixes
  Lint fixes
  Better handle large numbers of messages in cache on startup
  Keep object stores after conversations migrate to SQLCipher
  Longer timeout for orphaned file cleanup
  Tests and increase consistency for isFileDangerous calls
  Longer timeout for orphaned file cleanup
  v1.17.0-beta.2
  ...

# Conflicts:
#	background.html
#	package.json
7 years ago
sachaaaaa 5602f4bfff Change placeholder in discussion 7 years ago
sachaaaaa d4d0d05adf Lock text input while waiting for friend request reply 7 years ago
sachaaaaa ecd300d68d Change keysPending flag to keyExchangeStatus in conversation model 7 years ago
Scott Nonnenberg ca61c9cb85 Warnings for dangerous files 7 years ago
Scott Nonnenberg 8f3e3b7aaf Update to new design for avatars: individual/group icons/colors
And two initials.
7 years ago
sachaaaaa 22a86b5351 store key bundle status in conversation model 7 years ago
sachaaaaa 33ad509fbf Merge branch 'master' of https://github.com/signalapp/Signal-Desktop into development
# Conflicts:
#	_locales/ar/messages.json
#	_locales/es_419/messages.json
#	_locales/he/messages.json
#	_locales/hi/messages.json
#	_locales/hr/messages.json
#	_locales/kn/messages.json
#	_locales/ko/messages.json
#	_locales/mk/messages.json
#	_locales/sr/messages.json
#	_locales/uk/messages.json
#	_locales/vi/messages.json
#	package.json
7 years ago
Scott Nonnenberg 9c399624cc Support for blocking groups on mobile, via group/blocked syncs 7 years ago
sachaaaaa 2ae91752d3 skip fetching profiles when clicking on contact 7 years ago
Scott Nonnenberg fedfbed304 Copy quoted message contents into quote on receipt
Also:
  - visually distinguish any reference we couldn't verify on receipt
  - show toast on quote click if we can't scroll to message
  - toast visuals redesigned to match rest of app
7 years ago
Scott Nonnenberg 3105b77475 Migrate to SQLCipher for messages/cache
Quite a few other fixes, including:
  - Sending to contact with no avatar yet (not synced from mobile)
  - Left pane doesn't update quickly or at all on new message
  - Left pane doesn't show sent or error status

Also:
 - Contributing.md: Ensure set of linux dev dependencies is complete
7 years ago
Scott Nonnenberg 53b1b73909 Ensure back button appears when safety number screen shows 7 years ago
Scott Nonnenberg d51b2b48d1 Workaround for not ending up at bottom of conversation 7 years ago
Scott Nonnenberg f39a96bc76 Move to centralized message/cache data layer
Also, ensure that conversation.messageCollection has nothing in it
unless it has an associated ConversationView.
7 years ago
Scott Nonnenberg 5933a34a18 Use window.log in browser context, turn on console eslint rule 7 years ago
Scott Nonnenberg 643739f65d
Responding to feedback on the updated visuals (#2549)
* Conversation List Item: timestamp bold only when convo has unread

* Preserve the positioning of overlays on re-entry into convo

* ConversationListItem: Handle missing and broken thumbnails

* Shorten timestamp in left pane for better Android consistency

* Update convo last updated if last was expire timer change

But not if it was from a sync instead of from you or from a contact.

* Make links in quotes the same color as the text

* MediaGridItem: Update placeholder icon colors for dark theme

* Ensure turning off timer shows 'Timer set to off' in left pane

* ConversationListItem: Show unread count in blue circle

* Add one pixel margin to blue indicator for text alignment

* Ensure replies to voice message can bet sent successfully
7 years ago
Scott Nonnenberg 66bd6c826d Fix MediaGallery handling of videos - show thumbnail and overlay 7 years ago
Scott Nonnenberg 5e64e4ef40 Remove verbose updateLastMessage logging, fix MediaGallery save 7 years ago
Scott Nonnenberg 6e4b73ec0c Fix lint errors in conversation_view.js 7 years ago
Scott Nonnenberg db91560990 Fixes for quotes/schema upgrade, optimize media gallery load
Also: Fix for contact detail page; didn't show back button
7 years ago
Scott Nonnenberg 3c69886320 Finish new Message component, integrate into application
Also:
- New schema version 8 with video/image thumbnails, screenshots, sizes
- Upgrade messages not at current schema version when loading messages
  to show in conversation
- New MessageDetail react component
- New ConversationHeader react component
7 years ago
Scott Nonnenberg 212ec8bb73 Whenever user opens conversation, update its last message 7 years ago
Scott Nonnenberg e30b34f424 Add 'newmessage' event handler to Conversation for reliablity 7 years ago
Scott Nonnenberg 12b5547e72 Update contents of conversation even when view not hydrated
Also ensure that we update the last message in a conversation after
expire, after the mesage is really deleted from the database.
7 years ago
Scott Nonnenberg 548c8e69cf Emojification now all done with react via a few new components
Three locations were changed:
  1. a group update, which lists a set of contacts
  2. the contact name in the left pane
  3. the conversation title

Three new components were added to window.Signal.Components to support
these scenarios, respectively:
  1. Emojify
  2. ContactName
  3. ConversationTitle

Note that there are a number of other places in the app that should be
emojified, but never have been before. Essentially any place that a
contact name might be shown. A non-exhaustive list:
  - Show group members
  - Show safety number
  - Verified change notification
  - Disappearing timer change notification
  - Contact verification notification
  - Quote contact name
7 years ago
Scott Nonnenberg a5416e42c4 Refactor all emoji utility methods into window.Signal.Emoji 7 years ago
Scott Nonnenberg d54aedcefa
A few fixes for the contact detail screen (#2374)
* Only show 'send message' on contact detail when user has account

* Make contact detail headers visible in dark mode

* Fix vertical scrolling for very large contact in detail pane

* Fix a couple comment typos
7 years ago
Scott Nonnenberg 4e5c8965ff Move to react for newlines, emoji, and links in message body 7 years ago
Daniel Gasienica e723484498 Simplify closing emoji panel on escape key down 7 years ago
tommypacker 48708d5738 Close emoji panel on escape press 7 years ago
Scott Nonnenberg 37821e5a1b Wire up all contact behaviors, refactor Contact type/selector 7 years ago
Scott Nonnenberg 41be7f126b Visuals for embedded contacts as well as contact detail screen 7 years ago
Daniel Gasienica 13f1ec2e51 Use structured logs
Easier to search for static prefix and fields are named.
7 years ago
Daniel Gasienica 822850433e Apply manual fixes for ESLint errors 7 years ago
Daniel Gasienica 1dd87ad197 Format all source code using Prettier 7 years ago
Daniel Gasienica fccbf70d57 Pre-process media for `LightboxGallery` 7 years ago
Daniel Gasienica d00fb560b0 Avoid exposing `AttachmentTS` 7 years ago
Daniel Gasienica e1b620602d Display attachments from disk 7 years ago
Daniel Gasienica e2a2165d9c Remove lightbox on unload 7 years ago
Daniel Gasienica 45d6c7a5a8 Implement video support in lightbox 7 years ago
Daniel Gasienica ac04f0648a Load more documents than media 7 years ago
Daniel Gasienica b86f9c0be8 Allow saving of attachments from media gallery lightbox 7 years ago
Daniel Gasienica b74b761255 Implement click to save for document list 7 years ago
Daniel Gasienica 954433366e Load documents for media gallery 7 years ago
Daniel Gasienica 2a5f513ebc Organize `global`s 7 years ago
Daniel Gasienica bf3a547a76 Organize `global`s 7 years ago
Daniel Gasienica 8e3c38d5fe Fix formatting 7 years ago
Daniel Gasienica 96be0df8c7 Show lightbox controls based on presence of handlers 7 years ago
Daniel Gasienica 86a9923181 Remove TODOs 7 years ago
Daniel Gasienica 204de3aaea Lazily bind `Signal.Components.MediaGallery` 7 years ago
Daniel Gasienica b4a4182613 Hide ‘Save As…’ button in media gallery
Wait until we support it.
7 years ago
Daniel Gasienica 0d676a65b8 Open media gallery item in lightbox 7 years ago
Daniel Gasienica 4ce0472b9f Extract `Message.loadWithObjectURL` 7 years ago
Daniel Gasienica 2dc3877fd4 Integrate visual media attachment gallery 7 years ago
Daniel Gasienica f367a9b059 Move `private` method below `public` ones 7 years ago
Daniel Gasienica d7b21ef5dc Render attachments grouped by date 7 years ago
Daniel Gasienica ae419764bf Use arrow function over `.bind` 7 years ago
Daniel Gasienica 272c49c5bf Use existing `ReactWrapper` 7 years ago
Daniel Gasienica 32a3ef518b Render media gallery placeholder panel 7 years ago
Daniel Gasienica 273248d3fd Wire up ‘View All Media’ menu item 7 years ago
Scott Nonnenberg 21713cbce7
Update quotes to render emoji just like normal messages 7 years ago
Scott Nonnenberg d0bcf506b4
Put focus in the message composition field on reply 7 years ago
Scott Nonnenberg 73edabfb17
Full pipeline to send quotes, including thumbnail upload 7 years ago
Scott Nonnenberg 13ce056830
Make thumbnails on quote load and on quote preview creation 7 years ago
Scott Nonnenberg f4d9ab8ba0
Put quote preview in text box for Android, above it in iOS 7 years ago
Scott Nonnenberg afad1a8d77
conversation_view: Remove logging in quote handling 7 years ago
Scott Nonnenberg c71dcf0139
Show current quoted message above composition field
Note that substantial changes will be required for the updated Android
mockups, putting the quotation into the text box next to the attachment
preview.
7 years ago
Scott Nonnenberg b4ff223d18
Refactor: Push selector logic for quote props into Message model 7 years ago
Scott Nonnenberg d0b11c59f5
Eslintify conversation_view.js 7 years ago
Scott Nonnenberg a6467d4fda
Constrain 'start recording' event listener to capture-audio only
(it was firing when clicking on a microphone icon in quotation!)
7 years ago
Scott Nonnenberg 32925ed026
Load attachment data for quotedMessages, processMessage on add
Not ideal that it loads it twice, but AttachmentView is so selfish with
its blob and objectUrl!
7 years ago
Scott Nonnenberg 0f8dd7e2db
Fix a number of lint failures 7 years ago
Scott Nonnenberg 1cc0633786
Full support for quotations in Android theme 7 years ago
Scott Nonnenberg fb2ebddaa3
Remove expired message if it expired during database fetch (#1983)
* Log SyncMessage destination, even if it's a group

* Remove disappearing message even if deleted during fetch

This change fixes a potential race condition with disappearing message
removal from the UI. If the UI is in the middle of making a database
request for messages to display, then we need to wait for that to
complete before removing the newly-deleted expired message.
7 years ago
Scott Nonnenberg e999473f19
Preserve disabled state in the middle of sending message (#1937)
* Preserve disabled state in send-message field on click

Also: get consistent in treatment of 'disabled' property.

* Add some comments explaining how audio recording dismissal works
7 years ago
Scott Nonnenberg 2430ee00d4
Emoji: Eliminate unused images, make sure panel clicks add emoji (#1849)
* Emoji: Ensure that all clicks work by using emoji data directly

* Eliminate a number of unused emoji images from final build

* Re-add the generic sheets directory, which we partially filter
8 years ago
Scott Nonnenberg 0e328f3911
Merge branch 'master' into development
This catches the development branch up with v1.0.39 in master.
8 years ago
Scott Nonnenberg 83428e5b81
Remove last seen indicator if we get a sync'd outgoing message (#1805)
This mirrors the way Android does things.
8 years ago
Lilia fb931b4733 Emoji picker (#1608)
* Add emoji button and popup panel

This integrates a simple third party emoji panel with a few css overrides to
correct some relative paths and colors.

The trickiest thing about this is ensuring we don't break the layout, which is
acheived through precise control over the panel's height, and prodigious calls
to updateMessageFieldSize.

// FREEBIE

* Don't close emoji panel on click, do close on send

To better facilitate multiple emoji entry.

// FREEBIE

* Make panel emojis bigger and higher resolution

// FREEBIE

* Move paperclip button to the right of the microphone

This makes our bottom-bar button arrangement more comfortable and consistent
with Android.

// FREEBIE

* Move emoji picker padding to inner container

* Insert emojis at cursor position

Don't just append to the end like a n00b! Also handle selected text correctly.
https://stackoverflow.com/questions/11076975

// FREEBIE

* A few visual tweaks to reduce visual complexity of emoji panel

- No gray buffer on the right side of the emoji panel
- No gray buffer between message compose text box and emoji window
- The scroll bar for the emojis is the same as our normal scrollbars
8 years ago
Scott Nonnenberg dabc56d0cf Load profiles for a conversation without blocking convo load (#1570) 8 years ago
Lilia 52cc8355a6 Feature: Blue check marks for read messages if opted in (#1489)
* Refactor delivery receipt event handler

* Rename the delivery receipt event

For less ambiguity with read receipts.

* Rename synced read event

For less ambiguity with read receipts from other Signal users.

* Add support for incoming receipt messages

Handle ReceiptMessages, which may include encrypted delivery receipts or read
receipts from recipients of our sent messages.

// FREEBIE

* Rename ReadReceipts to ReadSyncs

* Render read messages with blue double checks

* Send read receipts to senders of incoming messages

// FREEBIE

* Move ReadSyncs to their own file

// FREEBIE

* Fixup old comments on read receipts (now read syncs)

And some variable renaming for extra clarity.

// FREEBIE

* Add global setting for read receipts

Don't send read receipt messages unless the setting is enabled.
Don't process read receipts if the setting is disabled.

// FREEBIE

* Sync read receipt setting from mobile

Toggling this setting on your mobile device should sync it to Desktop. When
linking, use the setting in the provisioning message.

// FREEBIE

* Send receipt messages silently

Avoid generating phantom messages on ios

// FREEBIE

* Save recipients on the outgoing message models

For accurate tracking and display of sent/delivered/read state, even if group
membership changes later.

// FREEBIE

* Fix conversation type in profile key update handling

// FREEBIE

* Set recipients on synced sent messages

* Render saved recipients in message detail if available

For older messages, where we did not save the intended set of recipients at the
time of sending, fall back to the current group membership.

// FREEBIE

* Record who has been successfully sent to

// FREEBIE

* Record who a message has been delivered to

* Invert the not-clickable class

* Fix readReceipt setting sync when linking

* Render per recipient sent/delivered/read status

In the message detail view for outgoing messages, render each recipient's
individual sent/delivered/read status with respect to this message, as long as
there are no errors associated with the recipient (ie, safety number changes,
user not registered, etc...) since the error icon is displayed in that case.

*Messages sent before this change may not have per-recipient status lists
and will simply show no status icon.

// FREEBIE

* Add configuration sync request

Send these requests in a one-off fashion when:
  1. We have just setup from a chrome app import
  2. We have just upgraded to read-receipt support

// FREEBIE

* Expose sendRequestConfigurationSyncMessage

// FREEBIE

* Fix handling of incoming delivery receipts - union with array

FREEBIE
8 years ago
Scott Nonnenberg 314b29e426
Redact group ids in logging
FREEBIE
8 years ago
Lilia 42f2142e36 Fix RangeError on non-file drag/drop events (#1498)
ConversationView responds to drag/drop events by forwarding them to its file
input. The file input stops propagation and handles the event only if the data
transfer is type file. This means that any other data type (text, img, etc...)
causes an recursive loop of event propagation, eventually resulting in logging a
"RangeError: Maximum call stack size exceeded".

Fix by only forwarding files to the file input.

// FREEBIE
8 years ago
Lilia ae190fed44
Profiles (#1453)
* Add AES-GCM encryption for profiles

With tests.

* Add profileKey to DataMessage protobuf

// FREEBIE

* Decrypt and save profile names

// FREEBIE

* Save incoming profile keys

* Move pad/unpad to crypto module

// FREEBIE

* Support fetching avatars from the cdn

// FREEBIE

* Translate failed authentication errors

When AES-GCM authentication fails, webcrypto returns a very generic error. The
same error is thrown for invalid length inputs, but our earlier checks in
decryptProfile should rule out those failure modes and leave us safe to assume
that we either had bad ciphertext or the wrong key.

// FREEBIE

* Handle profile avatars (wip) and log decrypt errors

// FREEBIE

* Display profile avatars

Synced contact avatars will still override profile avatars.

* Display profile names in convo list

Only if we don't have a synced contact name.

// FREEBIE

* Make cdn url an environment config

Use different ones for staging and production

// FREEBIE

* Display profile name in conversation header

* Display profile name in group messages

* Update conversation header if profile avatar changes

// FREEBIE

* Style profile names small with ~

* Save profileKeys from contact sync messages

// FREEBIE

* Save profile keys from provisioning messages

For standalone accounts, generate a random profile key.

// FREEBIE

* Special case for one-time sync of our profile key

Android will use a contact sync message to sync a profile key from Android
clients who have just upgraded and generated their profile key. Normally we
should receive this data in a provisioning message.

// FREEBIE

* Infer profile sharing from synced data messages

* Populate profile keys on outgoing messages

Requires that `profileSharing` be set on the conversation.

// FREEBIE

* Support for the profile key update flag

When receiving a message with this flag, don't init a message record, just
process the profile key and move on.

// FREEBIE

* Display profile names in group member list

* Refresh contact's profile on profile key changes

// FREEBIE

* Catch errors on profile save

// FREEBIE

* Save our own synced contact info

Don't return early if we get a contact sync for our own number

// FREEBIE
8 years ago
lilia 02df917f3a
Fix $name$ in confirmation dialogs
Our i18n shim supports multiple substitutions if you give it an array of strings
to use as replacements.

// FREEBIE
8 years ago
Scott Nonnenberg 8f0b0b121a
Add missing comma in ConversationView event list
FREEBIE
8 years ago