JC Brand
f6335dcabe
Document fired events with JSDoc
2019-03-29 21:04:33 +01:00
JC Brand
d41a7a14c3
Use API to emit and listen to events
2019-03-29 14:16:07 +01:00
JC Brand
27557d6a04
Document _converse.ChatBox.prototype.sendMessage
as an API method
...
Until now, we've only been explicitly documenting the `_converse.api`
namespace and only considered the methods under it as forming the API
contract (which determines how we do semver releases).
It appears as if we've reached a point where trying to keep everything
under the `_converse.api` namespace no longer makes sense. Certain
methods are applicable to particular models and trying to shoehorn them
into the `_converse.api` namespace seems clunky and non-intuitive.
I've therefore decided to slightly refactor `sendMessage` to let it take
two simple parameters and to document it with JSDoc so that it's
presented as an API method, albeit only available on a chat model.
updates #1496
updates #1504
2019-03-21 21:03:02 +01:00
JC Brand
675692df74
Use _converse.api.send
to forward messages
2019-03-21 20:54:23 +01:00
Emmanuel Gil Peyrot
b7ae9f212c
Replace http: with https: in conversejs.org links
2019-03-04 17:47:45 +01:00
JC Brand
f123f483ae
Fixes #1406
2019-02-21 09:19:02 +01:00
JC Brand
c026dc8a86
New copyright year
2019-02-18 20:23:18 +01:00
JC Brand
9233087548
Don't hash web storage ids.
...
Makes debugging more difficult and uses up extra CPU cycles for no real security benefit.
2019-02-18 20:23:18 +01:00
JC Brand
a4d608dcdf
Save room features in separate model
...
As a namespacing mechanism to avoid clashes.
Fixes bug where two chats are shown as currently being active in the rooms list.
2019-01-10 12:15:59 +01:00
JC Brand
98fee37a41
Destroy devicelist if we can't fetch the devices for it.
...
Otherwise Converse will try to fetch the devices again and again upon
page refresh.
2018-12-21 06:29:22 +01:00
JC Brand
45ed506551
Don't hardcode devices storage to session storage.
...
The devicelists are not stored in session storage, so we end up with
fetching all the devices per stored devicelist with every new browser
session.
2018-12-21 06:29:22 +01:00
JC Brand
e6c66cfebd
Ability to republish if publish-options precondition not met
2018-12-21 06:29:22 +01:00
JC Brand
bcb3bcaf03
OMEMO can only be supported once it's been initialized
...
updates #1180
2018-12-21 06:29:21 +01:00
JC Brand
a3830e9a7a
Use async/await
2018-12-21 06:29:21 +01:00
JC Brand
be1be3534c
Don't render the lock icon when the MUC doesn't qualify
...
Updates #1180
2018-12-21 06:29:21 +01:00
JC Brand
9aca32ad97
Handle errors when sending encrypted groupchat messages
...
updates #1180
2018-12-21 06:29:21 +01:00
JC Brand
d051085626
Only clear textarea once message was sent
...
This now requires `sendMessage` to return a boolean to indicate success.
Disable the textarea while message is being sent.
2018-12-21 05:58:22 +01:00
JC Brand
85dab7367b
Use pubsub#access_model
to publish keys and devices publically
2018-12-21 04:35:28 +01:00
JC Brand
9c05ca9a09
Add test for sending/receiving MUC OMEMO messages
...
While adding support for MUCs, I refactored converse-omemo somewhat to move functions
out of `overrides` and to use async/await
Updates #1180
2018-12-20 21:51:16 +01:00
JC Brand
f64fdb8088
Render the OMEMO lock icon in MUC toolbars as well
...
updates #1180
2018-12-20 21:51:16 +01:00
JC Brand
c8d78d744b
Fix typo and formatting in user-facing strings
2018-12-19 05:50:06 +01:00
JC Brand
d5485d09ae
Always render the OMEMO lock icon
...
When OMEMO isn't possible, render it as grey.
This change makes OMEMO for MUCs easier, since there I anticipate that
OMEMO support might change dynamically based on who enters/exits the
room.
updates #1180
2018-12-14 11:25:57 +01:00
JC Brand
79bfb45639
Use async/await in MAM code and tests
2018-12-06 13:10:33 +01:00
JC Brand
cd63afcaad
Add space following question mark
2018-11-22 09:09:14 +01:00
Christoph Scholz
da5ca0b585
implement XEP-0184: Message Delivery Receipts
2018-11-13 17:13:35 +01:00
JC Brand
3b60ced39c
Add a button for regenerating your OMEMO device bundle
2018-11-12 20:29:55 +01:00
JC Brand
fa4c555c44
Use async/await instead of explicit Promise
2018-11-12 14:45:57 +01:00
JC Brand
affafc746c
Bugfix. Make sure _devices_promise
is a Promise
2018-11-12 12:04:25 +01:00
JC Brand
461ebc0aea
Use async/await instead of explicit promises
2018-11-09 17:37:14 +01:00
JC Brand
6904f9a897
Use es2015 modules instead of UMD
2018-10-23 12:25:58 +02:00
cmrd Senya
8ba8eb02fa
Update main converse.js package to use @converse/headless
...
* Update moved dependencies references to @converse/headless
* Remove unused webpack resolve aliases
2018-10-22 12:44:38 +02:00
JC Brand
c8dc7b63b2
Disable OMEMO when the current device is not trusted.
...
updates #1242
2018-10-18 07:47:25 +02:00
JC Brand
bb78d8519f
Use async function instead of explicit promises
2018-10-18 07:03:42 +02:00
JC Brand
029fb6d60b
Make sure we have a device to publish before doing so
2018-10-18 00:17:21 +02:00
JC Brand
94a1852b4f
Use async function instead of explicit promises
2018-10-17 23:58:11 +02:00
JC Brand
a5a600bade
Fixes #1193 Properly handle OMEMO messages without body
tag
2018-10-15 23:47:22 +02:00
JC Brand
79b8ed7177
New release 4.0.2
2018-10-02 22:51:01 +02:00
JC Brand
dbfd460125
Don't include additionalData
when en/decrypting with crypto.subtle
...
Otherwise compatibility with Conversations is broken.
Unfortunately this means that OMEMO won't work on Edge, because it
for some reason requires the additionalData.
References:
* https://github.com/conversejs/converse.js/issues/1187#issuecomment-426276243
* https://stackoverflow.com/questions/42933162/web-crypto-api-using-microsoft-edge-38-14393-0-0/42950731
Fixes #1187
2018-10-02 22:07:16 +02:00
JC Brand
e05b7e9de3
OMEMO fixes for Edge.
2018-09-25 13:21:48 +02:00
JC Brand
cfcab80147
Don't inform of unencryptable OMEMO messages unless in debug mode
2018-09-07 15:23:16 +02:00
JC Brand
5f16babebd
Fix failing OMEMO test and simplify by using async/await
2018-09-02 14:27:05 +02:00
JC Brand
6f13676ee1
Show OMEMO error messages only in debug mode
2018-08-31 21:33:46 +02:00
JC Brand
1d5cf8eb7c
Fix AES-GCM encryption/decryption so that it works with Conversations
...
Fixes #497
2018-08-31 21:13:33 +02:00
JC Brand
c2184ce8e1
Always create a new session
2018-08-31 18:44:24 +02:00
JC Brand
fc6982ce08
Merge branch 'omemo-debug'
2018-08-31 18:39:01 +02:00
JC Brand
bd1fd7eef1
Key should be AES-128, not AES-256
2018-08-31 18:33:03 +02:00
JC Brand
c2f1b2543f
Pass array buffer to libsignal decrypt
2018-08-31 18:24:08 +02:00
JC Brand
c8211085fd
Pass array buffer to libsignal encrypt/decrypt methods
2018-08-31 18:10:09 +02:00
JC Brand
6a061b4525
Use raw
key format and not jwk
. Set correct key size.
2018-08-31 17:15:03 +02:00
JC Brand
ed9afe9afb
Only include key and not whole payload from libsignal
2018-08-31 13:57:49 +02:00
JC Brand
34541d6410
Add check before resetting
2018-08-30 13:39:33 +02:00
JC Brand
1dc1c1f98a
Properly generate and render fingerprints
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
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
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
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
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
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
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
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
e774e9d1af
Test that own devices (from other clients) get included
...
when sending out encrypted messages.
updates #497
2018-07-28 16:36:56 +02:00
JC Brand
a3593dbc7d
Implement and test sending of encrypted messages
...
updates #497
2018-07-28 15:37:36 +02:00
JC Brand
bcd6845756
Show fingerprints in the user details modal
...
updates #497
2018-07-25 11:33:16 +02:00
JC Brand
114e46dfab
Fix broken test and refactor slightly. updates #497
2018-07-22 10:33:57 +02:00
JC Brand
b80a77a21c
Include signedPreKeySignature in published bundle
...
updates #497
2018-07-21 21:53:31 +02:00
JC Brand
118a84f111
Bugfix. Make sure outgoing messages all have unique ids
2018-07-01 12:01:07 +02:00
JC Brand
648c0387dd
Refactor message sending
...
so that we don't have to always wait for stanza creation.
We only need to wait when OMEMO is active, so we keep the waiting
contained to that usecase.
2018-07-01 11:45:58 +02:00
JC Brand
6785eff4a7
Merge branch 'master' into converse-omemo
2018-07-01 11:44:04 +02:00