Commit Graph

1855 Commits

Author SHA1 Message Date
JC Brand
934e86536e Remove another vestige of OTR 2018-08-28 14:58:07 +02:00
JC Brand
21178add98 Remove converse-otr 2018-08-27 22:09:22 +02:00
JC Brand
4f8b5a4022 Use built-in crypto instead of CryptoJS 2018-08-27 21:54:29 +02:00
JC Brand
1dc1c1f98a Properly generate and render fingerprints 2018-08-27 21:02:31 +02:00
JC Brand
c142437320 Create new message for correction if the original is not available
Fixes #1172
2018-08-27 21:02:31 +02:00
JC Brand
3e7c8655ad Add a <store> hint to OMEMO messages.
updates #497
2018-08-27 16:44:19 +02:00
JC Brand
15a4bcd11e Add method to generate missing prekeys
When receiving a PreKeySignalMessage, then a prekey has been chosen and
should now be removed from the list of available prekeys in the bundle,
so that a different device doesn't choose it as well.

AFAICT, libsignal removes the prekey, so it's then up to us to
regenerate it and republish our bundle.

updates #497
2018-08-27 16:43:58 +02:00
JC Brand
ea5144c7e5 Refactor the OMEMOStore to not duplicate prekeys
Before these changes, prekeys were stored in two places, one place that
converse-omemo accessed and one that libsignal accessed and when
libsignal deleted a prekey the other store wasn't updated.

Now we let the methods called by libsignal store/remove prekeys (and the
signed_prekey) in the same place as used by the code in converse-omemo.
2018-08-25 23:22:18 +02:00
JC Brand
7959855891 Move publishBundle to OMEMOStore
updates #497
2018-08-24 16:32:40 +02:00
JC Brand
d784e4a73a Show an icon to indicate that a message is encrypted
updates #497
2018-08-24 16:26:54 +02:00
JC Brand
4c5ea34acf New build 2018-08-24 15:39:14 +02:00
JC Brand
3eb5e93f81 Finally able to send a message and decrypt it on the other side
Updates #497
2018-08-24 14:40:48 +02:00
JC Brand
2dd5976f65 Fix bugs in the OMEMO store and in the decrypt method.
Updates #497
2018-08-24 13:17:32 +02:00
JC Brand
9e56858aae Remove unnecessary promise wrapper 2018-08-24 10:51:59 +02:00
JC Brand
7bb7f8f4dc Can now successfully send an encrypted stanza
updates #497
2018-08-23 14:03:16 +02:00
JC Brand
c1123fd6a0 Used wrong registration id and identity key when building a session
updates #497
2018-08-23 14:03:12 +02:00
JC Brand
058905134e Serialize all array buffers to base64 before storing
Array Buffers can't be JSON serialized as is.

updates #497
2018-08-23 14:03:09 +02:00
JC Brand
d4ccf20e7f Update modals when devices get added
updates #497
2018-08-23 14:03:06 +02:00
JC Brand
b17579501f Provide error output to user when encrypted message can't be sent
updates #497
2018-08-23 14:03:00 +02:00
JC Brand
7692a46e17 Nonsencical to wrap a promise in try/catch 2018-08-23 14:02:53 +02:00
JC Brand
069d4a9fae Remove unnecessary promise wrapper
updates #497
2018-08-23 14:02:50 +02:00
JC Brand
fd639e2da6 Remove the active flag for devices.
Instead of setting `active` to `false`, we remove the device entirely
(unless its the current device).

Doing it this way means more fetching of bundles for devices that
disappear and then reappear from a user's devicelist.

However, there might be caching invalidation concerns with just reusing
a cached bundle for a device id that disappeared and then reappears.

Additionally this change simplifies the showing of a contact's device
fingerprints in the modal, since we don't have to take active/inactive
into consideration.

updates #497
2018-08-23 14:02:43 +02:00
JC Brand
781ad3d643 Update to use _converse.config 2018-08-23 09:49:51 +02:00
JC Brand
5e9d6c3d6a Merge branch 'master' into converse-omemo 2018-08-23 09:45:13 +02:00
JC Brand
9f8d30dde3 Create a new store, _converse.config to store trusted
The `_converse.session` store gets cleared after logout, but we want the
`trusted` flag to persist after logout.

Also update the documentation no that the `storage` config option has
been removed in favor of `trusted`.
2018-08-23 09:41:39 +02:00
JC Brand
62cecbec5f Merge branch 'master' into converse-omemo 2018-08-22 23:41:36 +02:00
JC Brand
76a2192afa Singleton models need an id attribute via its getter
Setting it on the model itself is not sufficient and then causes
changes which should be type `update` become type `create`, causing
multiple versions of the model... resulting in chaos.
2018-08-22 23:39:42 +02:00
JC Brand
9ed2ad631a Store whether this is a trusted device in _converse.session
So that it persists across page loads. Otherwise storage falls back to
the default, causing records to be in both local- and sessionStorage.

Additionally, update singleton models to have the 'id' available as a getter.

Otherwise multiple records gets stored in browserStorage, causing random
results being returned.
2018-08-22 23:36:54 +02:00
JC Brand
f01b6c29c8 Collections shouldn't have id attributes
Otherwise the collection's items aren't fetched but it's own properties.
The way to persistently remove items from a collection is to destroy
them, NOT to call `remove`.
2018-08-22 19:26:38 +02:00
JC Brand
5ded22207b identity_key should be stored as base64, not array buffer 2018-08-22 18:32:31 +02:00
JC Brand
fa0e7aeff5 Updated so that own device is properly created and published
Based on live testing. Updated tests accordingly.
2018-08-22 18:16:36 +02:00
JC Brand
a422f07866 Bugfix. beforeTearDown event handler not fired in tests 2018-08-22 14:33:09 +02:00
JC Brand
75bd24c19e Update device lists in modals if devices get removed 2018-08-22 14:33:09 +02:00
JC Brand
21a04d9de5 Avoid unnecessary promise-wrapping 2018-08-22 14:33:08 +02:00
JC Brand
de077ba9af Various small fixes while trying to get it to work 2018-08-22 14:33:08 +02:00
JC Brand
24d86c7edd Wrap in try/catch, otherwise handler gets removed upon error 2018-08-22 14:33:08 +02:00
JC Brand
235b24d1d4 Bugfixes.
- Use sizzle xmlns selector (which doesn't work with `querySelector`)
- PEP Subscription didn't have `+` before `notify`
2018-08-22 14:33:08 +02:00
JC Brand
cf3a33a82e __super__ is undefined because it's not an override 2018-08-22 14:33:00 +02:00
JC Brand
23a26cfdf5 __super__ is undefined because it's not an override 2018-08-22 11:41:38 +02:00
JC Brand
0339c59390 Clear old modals upon logout 2018-08-21 18:32:16 +02:00
JC Brand
3ec426e11d Don't render OMEMO stuff in profile modal if OMEMO's not enabled 2018-08-21 18:03:34 +02:00
JC Brand
a06d2c494a Implement own device removal via stanza 2018-08-21 17:35:17 +02:00
JC Brand
26e936583f Add devices section to own profile modal
Allow for devices to be removed.
2018-08-21 09:28:16 +02:00
JC Brand
8cc69ee5fb No need for a toJSON call, it's already an object 2018-08-20 11:17:26 +02:00
JC Brand
7d1db66056 Less explicit Promise declarations.
It's usually not necessary to wrap a promise inside another one, instead
the original promise can just be returned.
2018-08-20 11:16:06 +02:00
JC Brand
cda426bc82 Merge branch 'master' into converse-omemo 2018-08-20 10:34:04 +02:00
JC Brand
f98b11afeb Fix linting error 2018-08-20 08:59:48 +02:00
Emmanuel Gil Peyrot
958e8a98a8 Use the roster name or vCard nickname before falling back to vCard fullname or JID. 2018-08-20 08:59:01 +02:00
JC Brand
e7f211bacf Avoid an unnecessary promise and create message as soon as possible
under non-OMEMO circumstances. Otherwise, when messages are fetched in
bulk via MAM, then a message referring to a previous one (e.g.
a correction) may be processed before the message being referred to has
been created.
2018-08-19 10:32:43 +02:00
JC Brand
9a7f56db7d Fix format of stanza that queries for devices. 2018-08-19 10:09:43 +02:00
JC Brand
4ed43854bd Bugfix. Items need to go inside the list 2018-08-18 18:25:52 +02:00
JC Brand
c4ac73cc88 prekey id must be an int. 2018-08-18 18:24:29 +02:00
JC Brand
ca9229a906 createMessage now returns a promise.
Also, fix all broken tests, mostly related to this.
2018-08-18 17:12:22 +02:00
JC Brand
b4110dc162 Merge branch 'master' into converse-omemo 2018-08-18 10:24:55 +02:00
JC Brand
299fa4f3f8 Nicer error logging when translations are not found 2018-08-18 10:22:31 +02:00
JC Brand
e123c690f0 Add autocomplete support for occupants with only a JID 2018-08-16 17:11:04 +02:00
JC Brand
2db3db9bab Add support for editing messages containing mentions 2018-08-16 15:17:54 +02:00
JC Brand
d9c5867ff2 Check references when incrementing unread messages counter 2018-08-16 15:17:54 +02:00
JC Brand
b7eb19e225 Render mentions in a message 2018-08-16 15:17:54 +02:00
JC Brand
15df9b8605 Inlcude references in the outgoing XMPP stanza 2018-08-16 15:17:54 +02:00
JC Brand
f2b017ec89 Add method to determine references from message text 2018-08-16 15:17:53 +02:00
JC Brand
70b953ab84 Change selected item to the one the mouse is hovering over 2018-08-16 15:17:53 +02:00
JC Brand
324ffd5e40 Let @ trigger autocomplete with all possible options shown 2018-08-16 15:17:53 +02:00
JC Brand
cc3a158b57 Initial work on showing all options on @ 2018-08-16 15:17:53 +02:00
JC Brand
b6f5cd2cc9 Use the auto_first setting 2018-08-16 15:17:53 +02:00
JC Brand
9a8d3b695e Generic message which works for both single and groupchats 2018-08-16 15:17:53 +02:00
JC Brand
73deaf24c0 Make sure occupants toggle gets shown 2018-08-16 15:17:53 +02:00
JC Brand
13c9612a8a Let an additional tab select the currently highlighted element 2018-08-16 15:17:53 +02:00
JC Brand
2abd1c1db1 Get selection via up/down arrow to work 2018-08-16 15:17:53 +02:00
JC Brand
86fab99c54 Expand test case and improve code. 2018-08-16 15:17:53 +02:00
JC Brand
5ded3b6cb9 Make list an executable 2018-08-16 15:17:53 +02:00
JC Brand
ad73abbd12 Rewrite as ES2015 class 2018-08-16 15:17:53 +02:00
JC Brand
b6f4f05b9e Add converse-autocomplete and use that in the chat textarea 2018-08-16 15:17:53 +02:00
linkmauve
f0ad326e2e Simplify an error message on MUC service shutdown (#1161) 2018-08-16 11:36:44 +02:00
JC Brand
ddfe35b2c8 Set proper content type for file upload 2018-08-14 18:45:45 +02:00
JC Brand
45d1440684 Cancel message correction by pressing escape.
Also fixes #1153
2018-08-10 11:48:07 +02:00
JC Brand
c652568a03 Clear color after submitting a corrected message 2018-08-09 16:33:25 +02:00
JC Brand
c25cc4c76b Bugfix. Existing occupants weren't found because query was only by jid
Which meant that occupants were being duplicated.

updates #1146
2018-08-09 15:46:49 +02:00
JC Brand
1aceaa9c40 Avoid creating unnecesary promises
by returning existing promises and by using _converse.api.sendIQ
2018-08-09 14:44:39 +02:00
JC Brand
daf470e311 Check permissions before attempting to execute action on behalf of user 2018-08-09 14:43:40 +02:00
JC Brand
5e42bb2d49 Bugfix. Don't only set, save to storage.
Otherwise the flag doesn't persist across page loads.
2018-08-08 10:01:26 +02:00
JC Brand
8d40d5f108 Bugfix. Stanza passed in as 2nd parameter 2018-08-08 09:43:32 +02:00
JC Brand
2d05487862 More code reuse between chatboxview and chatroomview 2018-08-07 15:32:13 +02:00
JC Brand
d852721933 Place cursor at the end when correcting a message 2018-08-07 10:09:36 +02:00
JC Brand
08dce556f9 When correcting a message, also highlight the textarea. 2018-08-07 10:09:35 +02:00
JC Brand
27bc33ba09 Use nickname from global settings when entering a room 2018-08-07 10:09:35 +02:00
JC Brand
2884549bb3 Test decryption of incoming OMEMO message
updates #497
2018-08-04 23:49:01 +02:00
JC Brand
713f49453f Working example of AES-GCM encryption and decryption
with key import and export.

updates #497
2018-08-04 21:32:08 +02:00
JC Brand
f2c283c907 More work on decrypting messages 2018-08-04 19:41:06 +02:00
JC Brand
be0eaecff9 Parse incoming OMEMO encrypted messages 2018-08-04 09:26:23 +02:00
JC Brand
bb1fdd843a Use ternary operator to make more compact 2018-08-04 09:07:59 +02:00
JC Brand
4c3645c559 Merge branch 'master' into converse-omemo 2018-08-03 14:47:20 +02:00
JC Brand
b027f0f784 Fixes #1143 Disallow sending of empty messages 2018-08-01 18:48:02 +02:00
JC Brand
f120fbd209 Bugfix. Own groupchat messages weren't being recognized 2018-08-01 18:37:54 +02:00
JC Brand
dc4c832fce Add jsdoc docstrings to chats API.
Link to the jsdoc output from the Sphinx docs
2018-08-01 12:11:10 +02:00
JC Brand
506aa33131 Wait for promises before opening chats in API methods 2018-08-01 11:12:00 +02:00
JC Brand
cb118b9cd0 Extract inline code into method 2018-08-01 11:10:43 +02:00
JC Brand
cbe6092c33 Handle case where chat content is empty 2018-08-01 11:10:43 +02:00
JC Brand
1443fdd447 (WIP) Wait for promises before opening chats in API methods 2018-08-01 11:10:43 +02:00
Emmanuel Gil Peyrot
8de78dfaf5 Fix disco#info result stanza
Converse forgot to add the wrapping query element, making the iq
invalid[1].

Thanks to lovetox for reporting this bug!

[1] https://pastebin.com/raw/T7h3FKHu
2018-07-31 17:52:07 +02:00