Commit Graph

684 Commits (d26c13b155d4b505355dbe4e4244d5571db8f835)

Author SHA1 Message Date
lilia 76e170686a Make getBackground async 10 years ago
lilia 7799bef86c Tweak key conflict error messages
Be generic, because sometimes it's not TextSecure, but Signal.
10 years ago
lilia 915612114b Remove general get/put/remove methods from AxolotlStore 10 years ago
lilia d0e262d7cb AxolotlStore stores groups in indexeddb 10 years ago
lilia 359b4a15a2 Move group storage to axolotl store
Add async get/put/removeGroup to axolotl store and let libtextsecure
use it for group state storage.
10 years ago
lilia 748f32022a Fix up refreshGroup 10 years ago
lilia f774047935 Make libtextsecure group storage asynchronous 10 years ago
lilia c26c6fc317 Store sessions by encodedNumber
Storing multiple sessions in a single indexeddb record is prone to
clobbering data due to races between requests to update multiple device
sessions for the same number, since you have to read the current state
of the device->session map and update it. Splitting the records up makes
it so that those updates can be made in parallel. Selecting all the
sessions for a given number can still be done efficiently thanks to
indexeddb range queries.
10 years ago
lilia 37c496f4f0 Close the provisioning socket 10 years ago
lilia 43d6efcd9e Don't save device objects to disk
Generate them from session and identity data. Save/delete pending prekey
data in an in-memory store and attach it to outgoing device objects.
10 years ago
lilia f18795a253 Add removeSession 10 years ago
lilia f413f03a6b Add getDeviceIds to axolotlstore
And add tests for getDeviceIds and removeAllSessions
10 years ago
lilia 121671c99f Store identity keys in indexeddb
Let device storage request them from axolotl store rather than storing a
copy.
10 years ago
lilia 7eda48f755 Move Session Storage to indexedDB 10 years ago
lilia 20ebc3f890 Move identity key storage functions to axolotl store 10 years ago
lilia f38b18ef63 Move Session storage to axolotlstore 10 years ago
lilia 9de1572ba6 Convert all storage.devices methods to be asynchronous 10 years ago
lilia 71715c95bc Async remove identity 10 years ago
lilia 26f1aa4db5 Async putSessionsForDevice 10 years ago
lilia 666f6baaca Async getSessionsForNumber 10 years ago
lilia 9e7d8c0a08 Rename textsecure.api and make it internal-only 10 years ago
lilia 45a61780af Fixup refreshPreKeys and call it whenever a prekey is deleted 10 years ago
lilia 7d0aeac8cb Use a worker to facilitate key generation 10 years ago
lilia f465bdddbf Add textsecure.AccountManager
This class should be used for account registration and for refreshing
prekeys for your account.
10 years ago
lilia a960acacc6 Add textsecure.refreshKeys
This helper checks the server for the number of remaining prekeys, then
generates more if there are fewer than 10 remaining.

// FREEBIE
10 years ago
lilia 96eafc7750 Integrate libaxolotl async storage changes
* Session records are now opaque strings, so treat them that way:
  - no more cross checking identity key and session records
  - Move hasOpenSession to axolotl wrapper
  - Remote registration ids must be fetched async'ly via protocol wrapper
* Implement async AxolotlStore using textsecure.storage
* Add some db stores and move prekeys and signed keys to indexeddb
* Add storage tests
* Rename identityKey storage key from libaxolotl25519KeyidentityKey to
  simply identityKey, since it's no longer hardcoded in libaxolotl
* Rework registration and key-generation, keeping logic in libtextsecure
  and rendering in options.js.
* Remove key_worker since workers are handled at the libaxolotl level
  now
10 years ago
lilia 8304aa903a Update libaxololt to a087b9e746e67995f16e077183cc0 10 years ago
lilia 2ff954d2f8 Fix api.js 10 years ago
lilia cc6a44f35d Fix tests 10 years ago
lilia da34b8e0f8 Rename textsecure.websocket and make it internal-only 10 years ago
lilia 89c24cd2fa Move throwHumanError to api.js
It is only used there.
10 years ago
lilia 36b1e87214 Add textsecure.MessageReceiver
Encapsulate the websocket resources and socket setup process in a
friendly OO class. The MessageReceiver constructor expects an instance
of EventTarget on which to fire message events asynchronously. The
provider of the EventTarget can then add/remove listeners as desired.
10 years ago
lilia bf2bf4cfd9 Remove redirect to index from registration.done() 10 years ago
lilia 6f3de68834 Move browserAction call 10 years ago
lilia 37e09da1cc Remove unsued argument from getDeviceObject
Last usage of the `returnIdentityKey` argument was removed in 8b9a16852.
10 years ago
lilia bdecf5cc44 Generate key_worker.js
Instead of calling importScripts, which is prone to relative path
issues, generate the worker script with everything it needs included.
10 years ago
lilia 7af42a27c5 Fix registerKeys using array indices for key ids
preKeys is an array whose indices may or may not be keyId-based. Since
we have an inline keyId property, use that instead.
10 years ago
lilia 00989962d8 Rename worker script file 10 years ago
lilia de65f9e6bd Add missing resolve 10 years ago
Patrick Connolly b5d724ffc3 Replaced frontend getString calls broken in d3c158f.
Closes #224
10 years ago
lilia 90c742d57c More error logging 10 years ago
lilia 25224da12e Fix unsafe eval warning on registration page 10 years ago
lilia 23feeecbcf Wrap libts, don't leak into global namespace 10 years ago
lilia c51773ab0e More helpful error logging 10 years ago
lilia 319332bb6f Add missing semicolon
:[
10 years ago
lilia 5d4298697c Use view.$ shorthand for scoped jquery searches
Wish I'd noticed that one earlier. http://backbonejs.org/#View-dollar
10 years ago
lilia 13ce354ab8 Registration UX improvements
Add some nice modal dialogs instead of confirmation alerts.
10 years ago
lilia 6d9c7182c4 Let the key worker close itself when done 10 years ago
lilia d3dbf2328f Set unread count badge when background page is refreshed
Refreshing the background page unsets the badge.
10 years ago
lilia bfe23d86aa Run key generation in a worker
Ground work for a smoother registration flow. Overall UX still needs
some polish but at least now we can have a progress gif or animation or
whatever. Also adds the phonenumber-confirmation step as a simple alert
box, which will be replaced with a nice dialogue in a later commit.
10 years ago
lilia 196aa28873 Fix NaN badge
lolNaNcat
10 years ago
Matt Corallo 8b9a168524 Store session information separately 10 years ago
Matt Corallo e33c6fddda Do not rely on deviceObject.sessions anywhere in sendmessage 10 years ago
Matt Corallo 6c0f3ff1f0 Move session-storage logic to storage/devices from axolotl_wrapper 10 years ago
Matt Corallo 169097a409 Remove stale comments in axolotl_wrapper 10 years ago
Matt Corallo 89fefe4323 Create a textsecure.storage.impl to be overriden if desired 10 years ago
Matt Corallo 56bffdcfd3 Prefix libaxolotl-stored objects with "libaxolotl" 10 years ago
Matt Corallo 00cb420d37 Merge (un)encrypted storage layers 10 years ago
Matt Corallo 454b4726bd Replace load/decode/index around our own number with helpers 10 years ago
lilia 3759fe46e9 Account for -1 HTTPError code 10 years ago
lilia e52224e481 Remove libtextsecure's jquery dependency
Use only the finest, hand-crafted, artisanal XMLHttpRequests.
10 years ago
lilia a2d88b4fad Don't trigger notifications for sync messages 10 years ago
lilia 923bb8bbc9 Fix crash in message detail view
Fix crash when there's no contact for a group member.
10 years ago
lilia e8cb4efaa4 Allow key conflict resolution for group updates
Creating a group with a member who's identity key has changed would
previously fail silently. Now, we catch and save the error, allowing the
same conflict resolution process as with regular messages.

Fixes #205
10 years ago
lilia 4bd46f80e7 Allow empty group avatar file input 10 years ago
lilia ce36c36bd0 Include outgoing control messages in message history
So you know it worked.
10 years ago
lilia f067bb9954 Remove dead code 10 years ago
lilia fdb0935d6a Fix resolveConflicts for groups 10 years ago
lilia 6c3ac2de02 Collapse two views into one
We used to have a subview that branched on content/control messages, but
no more.
10 years ago
lilia caddb8dc09 Smoother group create experience
Previously there was a long pause between confirming the group details
and opening the conversation. Fix by first saving/opening the
conversation, rather than waiting for the initial group update to finish
transmitting.
10 years ago
lilia 74e01c2a95 Re-render control messages if necessary 10 years ago
lilia 48b0e8832d Fix message detail contacts for incoming group message
Previously the From-field displayed all the group contacts.
10 years ago
lilia bd82591b6c Remove extraneous listener 10 years ago
lilia a7079206f4 Nicer looking end-session and group control messages 10 years ago
lilia 20baa795ad Fixes #198 Squished avatars
Refactor all avatar views to use a shared partial, then change it to a
background image. Requires allowing unsafe-inline styles in the CSP.
10 years ago
lilia 6509561795 Make badge count accurate
Previously it would reset when refreshing the inbox. Now it tracks
changes to conversation unreadCounts.

Fixes #200
10 years ago
lilia 24768712e0 Focus text input when opening a conversation 10 years ago
lilia ebc8846fcb Fix bug in panels controller
Previously, we'd create a new model instance even when one already
existed in the inbox.
10 years ago
lilia 9474b16eba In rare cases, a group has no members 10 years ago
lilia 5ffa265559 Revert "Popout inbox"
This reverts commit 31e7d285e3.

This seemed like a nice feature, but the popup bubble isn't very
conducive to nontrivial user inputs, e.g. file inputs.

Fixes #211
10 years ago
lilia 06f4d4456d Fix empty notification on key conflicts 10 years ago
lilia c526dbda5f Set up production build task
`grunt copy`

Closes #191
10 years ago
lilia 718f1a5e3d Improve notification contents
Include sensible descriptions of non-content messages. For group
messages, display the sender's name and avatar rather than the group's.
10 years ago
lilia 43ec4099c9 Reset the name field on new group form 10 years ago
lilia 11b822eaf3 Allow unknown groups
Save groups even if we've never heard of them. Previously
we would fail to save due to a missing 'type' attribute.
10 years ago
lilia 84237cae6f Fix standalone registration page 10 years ago
lilia 9930937707 Move handlePushMessageContent to message model
And retool message handling flow to helps us avoid instantiating
duplicate message and conversation models.
10 years ago
lilia 897d391817 Improve identity key conflict ux
Clicking on a key conflict message opens the message detail view,
which displays the contact(s) in this conversation. If the message
contains a key conflict with any of these contacts, a button is
displayed which attempts to resolve that conflict and any other
conflicts in the conversation that are related to that contact.
10 years ago
lilia 857eee5003 Divorce identity wipe from tryAgain functions
We'd like to live in a world where we can retry all the pending
conflicts in a conversation as a batch, which means we don't want to
wipe the identity key before processing each message. Thus, remove that
step from these handlers and encapsulate in a method on the conversation
model.
10 years ago
lilia c642854ddf Extract app-level logic from libtextsecure
Ensure that both tryAgain functions return promises, allowing the
application to take appropriate action in the result of success or
failure. This lets us remove all dependency from libtextsecure on
app-level constructs like message objects/ids and the `extenion.trigger`
function.

Corresponding frontend changes to follow in another commit.
10 years ago
lilia e88d4d8170 Tweak replayable errors
1. Return the value returned by the registered function, to expose the
underlying promise to the caller.

2. Stop accepting extra arguments to the replay function. The caller
should be able to do what they want with the returned promise instead.

3. Add a timestamp argument to the outgoing case, needed to re-try
sending a message.
10 years ago
lilia 31e7d285e3 Popout inbox
Rather than opening the inbox in its own window, let it appear as a
browser action popup by default, but allow promotion to its own window
if requested.
10 years ago
lilia cecb438a52 Simplify avatar rendering 10 years ago
lilia fa3699cdd3 Trigger desktop notifications
Notifications show the conversation name, avatar, and new message text.
Clicking the notification opens the conversation.
10 years ago
Matt Corallo d3c158f4cf Move libaxolotl out-of-tree 10 years ago
Matt Corallo e2e06b2d3c Remove axolotl.storage usage from libtextsecure 10 years ago
lilia b790f82849 Remove libaxolotl dependency on textsecure/errors.js
Let libaxolotl throw a generic error instead of a replayable error, and
add an helper function in libtextsecure's axolotl_wrapper to catch and
convert from the generic error to the replayable one. This allows the
ReplayableError to remain a libtextsecure-level concept only.

Somewhat unrelatedly, but nearby, fix some whitespace and add missing
semicolon.
10 years ago
lilia 676ad04958 Add device storage method to wipe an identity 10 years ago
lilia f86d6d51e3 Only init emoji map once.
`emoji.init_colons` creates and populates `emoji.map.colons`, a global
map from common names to emoji code points. It's safe to call
repeatedly, but unecessary.
10 years ago
lilia 9e04910124 Recompile curve25519 with emcc 1.29.0
Now with actual malloc/free implementations. Had to drop back to -O1
optimization because the ed25519 signature test broke with -O2. :(

Closes #153

The toolchain install and build process, for reference:
```
wget https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz
tar xvfz emsdk-portable.tar.gz
cd emsdk-portable
./emsdk update
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
cd ../TextSecure-Browser
grunt build
```
10 years ago