Commit graph

1583 commits

Author SHA1 Message Date
lilia
1da44c847b Fix handling sent messages sans expirationStartTimestamp 2016-10-05 19:09:20 +09:00
lilia
a12569e356 Fix destination on synced timer updates 2016-10-05 19:09:20 +09:00
lilia
86dbbc9f29 Allow null expireTimer in sendmessage 2016-10-05 19:09:20 +09:00
lilia
7eea88a545 Convert expirationStartTimestamp to number 2016-10-05 19:09:20 +09:00
lilia
56aee5e8ef Update conversation snippets automatically
Fixes stale snippets after the message has expired
2016-10-05 19:09:20 +09:00
lilia
8d16bfb65e Populate conversation snippet for timer updates 2016-09-29 16:17:01 -07:00
lilia
e488c19889 Do not trigger notifications for timer updates 2016-09-29 16:17:01 -07:00
lilia
7a26cf79ee Insert timer update messages when inferring timer changes 2016-09-29 16:17:01 -07:00
lilia
ad2174e279 Sync expirationStartTimestamp on outgoing messages
Linked devices need to know when to start the clock.
2016-09-29 16:17:01 -07:00
lilia
6074a29046 Send timer update messages when changing the timer 2016-09-29 16:17:01 -07:00
lilia
824b7417e9 Apply expireTimer to outgoing messages 2016-09-29 16:17:01 -07:00
lilia
2b2c6ab040 Frontend for timer updates and timer indicator 2016-09-29 16:17:01 -07:00
lilia
448835e4d5 Bail early when processing timer updates
Also let expireTimer default to 0.
2016-09-29 13:06:25 -07:00
lilia
4cd2c03687 Add clock svg style 2016-09-28 17:20:03 -07:00
lilia
7331d967d2 Add support for expiration timer updates messages 2016-09-28 17:20:03 -07:00
lilia
e809a0cf8b Breakout timer rendering into its own view
Make width and height constant.
2016-09-28 17:20:03 -07:00
lilia
bd713352e3 Hourglass can start at any percentage
This breaks the css-purity of our mixin but is necessary in order to
apply the initial offset of the hourglass animation dynamically, since
jquery can't manipulate arbitrary css on psuedo elements.
2016-09-28 17:20:02 -07:00
lilia
5f92ccd524 Render animated hourglass when messages are expiring 2016-09-28 17:20:02 -07:00
lilia
1383dc141f Ensure that expired messages are removed from the frontend 2016-09-28 17:20:02 -07:00
lilia
02ea4f2475 Use read receipt envelope to infer startExpirationTime
Avoids display of phantom messages that are only received and marked
read locally long after they have expired on another linked device.
2016-09-28 17:20:02 -07:00
lilia
96fd017890 Support for incoming expiring messages
When initialized, or when expiration-related attributes change, expiring
messages will set timers to self-destruct. On self-destruct they trigger
'expired' events so that frontend listeners can clean up any collections
and views referencing them.

At startup, load all messages pending expiration so they can start their
timers even if they haven't been loaded in the frontend yet.

Todo: Remove expired conversation snippets from the left pane.
2016-09-28 17:20:02 -07:00
lilia
b888e01044 Add an index on message.expireTimer
This allows us to query all expiring messages on startup.
2016-09-28 17:20:02 -07:00
lilia
b3e932dce8 Add protocol support for disappearing messages 2016-09-28 17:20:02 -07:00
lilia
5b5a430114 Support i18n with multiple links
We can now pass a variable number of hrefs into i18n_with_links rather
than just one.
2016-09-27 13:34:54 -07:00
lilia
9b645f90c8 Remove Android requirement from install flow
// FREEBIE
2016-09-26 10:43:51 -07:00
lilia
b0c59233f3 Add test fixtures
Test page loads fixtures and renders the inbox view. This may be useful
for smoke testing style changes or generating screenshots with
pseudo-realistic data.

Includes a couple small changes to get rendering working outside the
app.
2016-09-23 19:51:42 -07:00
lilia
c16e80c5e4 Let key verification view lazy-load keys
// FREEBIE
2016-09-20 13:45:21 -07:00
lilia
fe209a2f41 Upgrade libsignal-protocol v1.1.6 2016-09-20 13:45:21 -07:00
lilia
7b3b01bdf6 Refactor registration event
Make AccountManager into an event target for better separation between
app and service-library handling of registration events.
2016-09-20 13:42:33 -07:00
lilia
6dcff46e26 Move chrome-specific calls to chromium.js
// FREEBIE
2016-09-20 13:37:50 -07:00
lilia
b1afb79a14 Set theme based on master device userAgent
// FREEBIE
2016-09-15 16:28:46 -07:00
lilia
2b210b3fcd Fix undefined websocket port
Fixes #889

// FREEBIE
2016-09-12 11:44:52 -07:00
lilia
edd6f58539 Update display when contact colors change
// FREEBIE
2016-09-12 11:44:52 -07:00
lilia
9db13310b4 Add port 80
// FREEBIE
2016-09-08 15:00:05 -07:00
lilia
384598fbcc Log websocket urls
// FREEBIE
2016-09-08 14:31:20 -07:00
lilia
0487fa3cd1 Add server fallback port 8443
// FREEBIE
2016-09-08 14:31:19 -07:00
lilia
487f75dd27 Fix lint
// FREEBIE
2016-09-08 11:57:34 -07:00
lilia
f610233ef6 Add support for syncing blocked numbers
// FREEBIE
2016-09-07 13:04:45 -07:00
lilia
53f20640af Add support for syncing colors
// FREEBIE
2016-09-07 13:04:45 -07:00
lilia
141cdef2a4 Generalize toast view template
// FREEBIE
2016-09-07 13:04:45 -07:00
lilia
ff490994ab Render emoji in group name in group updates
// FREEBIE
2016-09-01 16:01:08 -07:00
lilia
baff77c509 Revert "Remove Android requirement from install flow"
This reverts commit 4b9f7d518e.
Put this back when iOS desktop support is ready for general release.
2016-09-01 14:04:46 -07:00
lilia
1d5471c318 Fix search tests
// FREEBIE
2016-09-01 14:01:51 -07:00
lilia
7e0df07e88 Fix tests
// FREEBIE
2016-09-01 13:47:50 -07:00
lilia
9deaa95e8c Strip unicode null from deviceNames
Not sure how or why but sometimes deviceNames arrive on the server
containing a null char.

// FREEBIE
2016-09-01 13:19:27 -07:00
lilia
43ca465eb9 Remove unused code
// FREEBIE
2016-09-01 13:19:27 -07:00
lilia
1c89142752 Customize emoji conversion
Use image tags with :emoji: in a title attribute for an optimal
copy/paste ux.

// FREEBIE
2016-09-01 12:55:23 -07:00
lilia
f042378a37 Upgrade emoji support and switch to apple emoji
Use emojijs for replacing unicode with image tags for display. We were
already using it to replace colons with unicode. Additionally it has
a companion data repo that is kept up to date with images from all
the common image sets.

// FREEBIE
2016-09-01 11:51:53 -07:00
lilia
4b9f7d518e Remove Android requirement from install flow
// FREEBIE
2016-08-31 15:04:01 -07:00
lilia
b5191e78c3 More themeing
Restyle message input and welcome screen
Cleanup search, headers

// FREEBIE
2016-08-30 18:31:03 -07:00
lilia
5333f89d9d Fix svg icon colors
// FREEBIE
2016-08-30 18:31:02 -07:00
lilia
6c05a71424 Tune up ios bubble style
// FREEBIE
2016-08-30 18:31:02 -07:00
lilia
8fbb0d05f5 Add settings ui for theme
// FREEBIE
2016-08-30 18:31:02 -07:00
lilia
7b9894d688 Refactor css to support theming
Move away from inline style attributes for setting contact colors.
Apply colors by name via css classes instead. Also lays groundwork
for syncing contact colors.

// FREEBIE
2016-08-30 18:31:02 -07:00
lilia
3531667207 Fix closing recorder when clicking away
// FREEBIE
2016-08-25 11:40:40 -07:00
lilia
87f4029210 Fix lint
// FREEBIE
2016-08-24 16:56:24 -07:00
lilia
3aa72d2244 Address large font size edge cases
Fix some visual bugs occuring at large font size:
  * Contact names break onto the next line after their avatars in
    message detail screen
  * Settings menu font-size failed to scale
  * Handle Content overflow in modals.

// FREEBIE
2016-08-24 16:47:39 -07:00
lilia
b330b80484 Change font size on ctrl+scroll
Fixes #864

// FREEBIE
2016-08-24 16:10:02 -07:00
lilia
9fa7e7f462 Remove unused view
// FREEBIE
2016-08-24 16:08:29 -07:00
lilia
645e05c2b9 Add support for new fingerprint format
This will be ready to roll whenever Android/iOS is.

// FREEBIE
2016-08-24 01:50:46 -07:00
lilia
254b6621c2 Update libsignal-protocol v1.1.5
// FREEBIE
2016-08-24 01:50:46 -07:00
lilia
4f46a164ba Add voice notes
// FREEBIE
2016-08-23 16:16:31 -07:00
lilia
d11f9fd538 Update libsignal-protocol v1.1.4
// FREEBIE
2016-08-18 10:41:06 -07:00
lilia
9ab64ec44d Allow localization of month-day format string
The short month-day format ex: 'Aug 8', is not built-in to momentjs, so
we need to localize it.

// FREEBIE
2016-08-18 10:41:05 -07:00
lilia
e5b54d9b6a Bubble up InvalidStateErrors and log them
These may be indicative of a potentially fatal lack of disk space.

// FREEBIE
2016-08-11 12:22:32 -07:00
lilia
83629df560 Log on failure to fetch storage
// FREEBIE
2016-08-11 12:22:32 -07:00
lilia
67c7a06c28 Use momentjs for timestamp localization
Let momentjs handle proper pluralization of relative times. This comes
at the sacrifice of displaying 'minutes' in the conversation list
timestamp rather than 'min'. Note that we don't use moment's fromNow
instance method so as to preserve the rounding logic that matches the
Android client.

// FREEBIE
2016-08-11 12:22:32 -07:00
lilia
78b8fbc836 Update momentjs
// FREEBIE
2016-08-11 12:22:32 -07:00
lilia
4d9b6917d7 Fix timestamp tests
These were failing because chrome's i18n functions aren't available in
test.

// FREEBIE
2016-08-05 17:28:16 -07:00
lilia
688b297050 Move window.chrome reference to chromium.js
// FREEBIE
2016-08-05 17:13:55 -07:00
lilia
fed8f62617 Remove untranslatable strings from locale file
// FREEBIE
2016-08-05 13:41:23 -07:00
lilia
6a3a724dc4 Add momentjs locales
// FREEBIE
2016-08-05 13:20:39 -07:00
Benedikt Radtke
e836bfd3f7 Added basic localization for timestamps
This commit implements basic localization for the timestamps in conversations and the conversation list.

// FREEBIE
2016-08-04 17:40:13 -07:00
lilia
e07616e2ef Only create notifications for unread messages
In some cases, we have already received a read receipt for an incoming
message by the time we go to create a notification about it. In this
case, we should skip the notification.

// FREEBIE
2016-08-04 15:34:27 -07:00
lilia
8939c61c7c Log on notification removal
// FREEBIE
2016-08-01 20:19:16 -07:00
lilia
4c0ed76909 Update libsignal-protocol v1.1.3
// FREEBIE
2016-08-01 20:19:09 -07:00
lilia
186c597e24 Use port 4433 on staging
Now with over 9000% more CA-signed cert!

// FREEBIE
2016-07-28 18:39:55 -07:00
lilia
3a50a892dc Don't sort if already sorted
// FREEBIE
2016-07-28 18:39:55 -07:00
lilia
2cea499736 Reduce log noise from prekey messages
// FREEBIE
2016-07-28 18:39:53 -07:00
lilia
7efdfc95ee Log when updating notifications
// FREEBIE
2016-07-28 18:39:14 -07:00
lilia
c39d6687e5 Reduce log noise from delivery receipts
Stop logging envelope messages on receipts since we log the same info as
a receipt in background.js.

// FREEBIE
2016-07-28 18:39:13 -07:00
lilia
748215e285 Fix style
// FREEBIE
2016-07-14 11:09:03 -07:00
Benedikt Constantin Radtke
2870c1fff2 Fixed fastforwarding closing videos' fullscreen mode
This commit stops the MessageView from adding the attachment more than once. Previously an attachment was appended to the MessageView every time an update
event was emitted, which happens when forwarding.

// FREEBIE
2016-07-14 11:03:14 -07:00
lilia
8a153e942e Fix lightbox
// FREEBIE
2016-06-30 16:56:51 -07:00
lilia
5bff1d2cab Scope media pausing to the open conversation
// FREEBIE
2016-06-30 12:54:00 -07:00
Benedikt Radtke
d5b003a15e Fixed media pausing behaviour when clicking the conversation list
This commit changes the inbox to stop video and audio elements when selecting a new conversation, and to not stop such elements when the same
conversation was selected (fixes #391).

// FREEBIE
2016-06-30 12:47:06 -07:00
lilia
005444d09a Update libsignal-protocol v1.1.2
// FREEBIE
2016-06-30 12:45:27 -07:00
lilia
f670061669 Pressing escape closes the lightbox
// FREEBIE
2016-06-30 12:28:36 -07:00
lilia
a069939f65 Refactor attachment saving for DRYness
// FREEBIE
2016-06-30 12:28:36 -07:00
Benedikt Radtke
a1345c52b4 Added Save-As dialog for unsupported filetypes
Despite the "click to save"-description of unsupported file types, clicking them did not save them.
This commit implements a Save-As dialog instead of opening the file in chrome.

// FREEBIE
2016-06-30 00:18:36 -07:00
lilia
0a7f203565 Log on session save failure
// FREEBIE
2016-06-29 18:22:27 -07:00
lilia
5059fd237a Disable keepalive logging
// FREEBIE
2016-06-29 18:22:27 -07:00
lilia
80c6a2802f Handle sync request where no groups are sent
If a user has no groups, no group sync message is sent. This is a normal
result that should result in a success event rather than a timeout.

// FREEBIE
2016-06-26 15:52:57 -07:00
lilia
5fcf2ea66f Update libsignal-protocol v1.1.1
// FREEBIE
2016-06-23 14:17:01 -07:00
lilia
9091233950 Open images in a lightbox
Adds file-write permission for saving to disk from lightbox.

Fixes #810

// FREEBIE
2016-06-20 11:55:23 -07:00
lilia
8e1d884a10 Add button for re-importing contacts from phone
Add a section under settings for performing a contact sync from your
mobile device. This just re-runs the same import operation that occurs
at install/link time.

// FREEBIE
2016-06-16 16:43:07 -07:00
lilia
167f19153c Update libsignal-protocol v1.1.0
Moves padding operations to the service library.

// FREEBIE
2016-06-14 19:30:26 -07:00
lilia
b8fddfbbdd Update libsignal-protocol v1.0.0
// FREEBIE
2016-06-14 16:27:34 -07:00
lilia
d89c3e8e86 Remove devices with no keys
// FREEBIE
2016-06-06 17:59:44 -07:00
lilia
7caecc564d Process all incoming conflicts before outgoing ones
Fixes a session management problem where, after resolving a conflict
with some contact, that contact would get bad mac as a result of us
sending them a new prekey message before processing a pending conflicted
prekey message received from them earlier.

Fixes #806

// FREEBIE
2016-05-26 18:11:17 -07:00
lilia
3cd80d3f1e Remove tool tip from unregistered user errors
// FREEBIE
2016-05-26 10:59:43 -07:00
lilia
58c3fe047e Make error messages clickable
// FREEBIE
2016-05-25 20:39:43 -07:00
lilia
b2f07984df i18n unregistered user errors
// FREEBIE
2016-05-25 20:33:14 -07:00
lilia
b6f785737c Restyle error icons, move them outside the bubble 2016-05-25 20:32:00 -07:00
lilia
89d3b772d5 Define UnregisteredUserError class
// FREEBIE
2016-05-25 20:20:10 -07:00
lilia
81dfdd959f Don't allow retry on unregistered user errors
// FREEBIE
2016-05-24 11:36:04 -07:00
lilia
292260d973 Remove timestamp logging
// FREEBIE
2016-05-23 18:25:03 -07:00
lilia
331ca46d75 Fix websocket event name
Fixes #798

// FREEBIE
2016-05-23 16:04:06 -07:00
lilia
15e964de81 Update libsignal-protocol v0.13.0
* libsignal.Curve is now a synchronous interface.
* libsignal.Curve.async is now the asynchronous interface.
* Fixes bugs in session management.

// FREEBIE
2016-05-18 14:29:30 -07:00
lilia
f216262298 Update libsignal-protocol v0.12.0
Moves version byte check to protocol lib.

// FREEBIE
2016-05-18 13:15:58 -07:00
lilia
055c0c323e Remove unneeded property from device object
// FREEBIE
2016-05-18 13:15:57 -07:00
lilia
f8e176fd40 Dedupe methods
Define textsecure.crypto in terms of libsignal.crypto.

// FREEBIE
2016-05-18 13:15:57 -07:00
lilia
58452066aa Move device storage methods to outgoing message
This is the only place they are called.

// FREEBIE
2016-05-18 13:15:56 -07:00
lilia
daae664965 Remove unused function
// FREEBIE
2016-05-18 13:15:56 -07:00
lilia
d32a352d8a Use deviceIds/addresses instead of encodedNumbers
The getDeviceObjectsForNumber method returns device objects that contain
nothing but the encodedNumber property. Instead, just deal in deviceIds
until a SignalProtocolAddress is constructed to manage both the number
and deviceId.

// FREEBIE
2016-05-18 13:15:55 -07:00
lilia
95935f70ee Remove relay check from sendmessage
We don't currently store any relay information about devices,
and

// FREEBIE
2016-05-18 13:15:55 -07:00
lilia
f16803018c Update libsignal-protocol v0.11.0
* Changes return type from decryption functions
* Update components

// FREEBIE
2016-05-18 13:15:44 -07:00
lilia
148bd32671 Update libsignal-protocol v0.10.0
* Changes policy for old session deletion
* Renames putIdentityKey to saveIdentity
* Remove device messages

// FREEBIE
2016-05-18 11:11:11 -07:00
lilia
ffa702c934 Update libsignal-protocol v0.9.0
* Exposes crypto APIs.
* Move worker methods to libsigna.worker.
* Move ProvisioningCipher to libtextsecure.
2016-05-17 12:03:37 -07:00
lilia
cd2218ada7 Move hard-coded worker url out of libtextsecure
// FREEBIE
2016-05-15 17:04:13 -07:00
lilia
d5f4665fa4 MessageReceiver uses SessionCipher to retry conflicts
// FREEBIE
2016-05-15 17:02:45 -07:00
lilia
9ecfe6acb0 Use SignalProtocolAddress in MessageReceiver constructor
// FREEBIE
2016-05-15 17:02:45 -07:00
lilia
213b44935d Update libsignal-protocol v0.8.0
Reorder identity key check
2016-05-15 17:02:21 -07:00
lilia
eee93987f8 Update libsignal-protocol v0.7.0
Remove unused methods.

// FREEBIE
2016-05-14 23:39:59 -07:00
lilia
6266050a67 Remove unused jobqueue
// FREEBIE
2016-05-14 23:26:34 -07:00
lilia
050ea87aaf Get device ids instead of objects
// FREEBIE
2016-05-14 23:26:33 -07:00
lilia
7939b6ae98 Remove hasOpenSession from protocol_wrapper
// FREEBIE
2016-05-14 23:26:33 -07:00
lilia
0483fa2f97 Remove closeOpenSessionForDevice from protocol_wrapper
// FREEBIE
2016-05-14 23:26:33 -07:00
lilia
0d5ec60a7a Remove handlePreKeyWhisperMessage from protocol_wrapper
// FREEBIE
2016-05-14 23:26:32 -07:00
lilia
8010a09045 Remove decryptWhisperMessage from protocol_wrapper
// FREEBIE
2016-05-14 23:26:32 -07:00
lilia
891ddacd35 Remove processPreKey from protocol_wrapper
Use SessionBuilder directly instead of protocol_wrapper

// FREEBIE
2016-05-14 23:26:32 -07:00
lilia
843036f0ce Remove getRegistrationId and encryptMessageFor from protocol_wrapper
We can now use protocol classes like SessionCipher directly because it
supports per-device read/write serialization internally.

// FREEBIE
2016-05-14 23:26:31 -07:00
lilia
284cf5be3a Update libsignal-protocol v0.6.0
Adds session accessors on SessionCipher and an internal session lock to
replace the same implemented in protocol_wrapper.js

// FREEBIE
2016-05-14 23:24:34 -07:00
lilia
92293f9da9 Update libsignal-protocol v0.5.0
Renames libsignal.util to libsignal.KeyHelper.

// FREEBIE
2016-05-13 19:47:39 -07:00
lilia
e68031019b Integrate libsignal.SessionCipher
Bypass the old protocolInstance wrapper methods and use the shiny new
SessionCipher class directly.

// FREEBIE
2016-05-12 13:13:15 -07:00
lilia
9e6ad27fc5 Update libsignal-protocol v0.4.0
// FREEBIE
2016-05-11 15:30:30 -07:00
lilia
56238136ca Remove trivial wrapper method
// FREEBIE
2016-05-10 19:38:44 -07:00
lilia
78cdc0cb52 Remove tempKeys
Now that we simply establish and save a session via SessionBuilder
rather than saving the keys to pass in during encrypt, we can stop
caching them in memory in between the identity key check and the
encryption step.

// FREEBIE
2016-05-10 19:38:42 -07:00
lilia
519d3ec31b Update libsignal-protocol
// FREEBIE
2016-05-10 19:24:33 -07:00
2-4601
d861797d66 i18n 'Permanently delete this conversation?'
// FREEBIE
2016-05-05 12:54:15 -07:00
2-4601
b9ecdbf402 i18n 'Error handling incoming message'
// FREEBIE
2016-05-05 12:54:15 -07:00
2-4601
60fe1e2cea i18n 'Received message with unknown identity key'
// FREEBIE
2016-05-05 12:54:14 -07:00
2-4601
52992a8f12 i18n 'Secure session ended'
// FREEBIE
2016-05-05 12:54:14 -07:00
lilia
9f871db48a Update libsignal-protocol / Update prekey format
Integrates change in prekey object formatting, which now matches more
conveniently with the representation rendered by the server.

// FREEBIE
2016-05-04 00:33:05 -07:00
lilia
b385b6e48e Update libsignal-protocol
SessionBuilder / SessionRecord refactor.

// FREEBIE
2016-05-04 00:05:37 -07:00
lilia
e659104cbf Add isTrustedIdentity to SignalProtocolStore
Adds a new required storage method for the protocol library.

// FREEBIE
2016-05-03 23:58:57 -07:00
lilia
7dcaf721ca Add keepalive logging
// FREEBIE
2016-04-28 11:27:15 -07:00
lilia
70fe14e91b Fix reference errors in isStringable
// FREEBIE
2016-04-26 15:15:28 -07:00
lilia
9a1a3bdf64 Rename axolotl to libsignal
// FREEBIE
2016-04-22 13:43:30 -07:00
lilia
1d60dc38fb Rename axolotl storage
// FREEBIE
2016-04-22 13:43:30 -07:00