Commit Graph

1203 Commits

Author SHA1 Message Date
JC Brand
7539fc1a6f Move functions out of src/headless/core.js into utils 2022-12-28 21:36:40 +01:00
JC Brand
f740332e95 Fixes based on Github's code scanning results 2022-12-28 21:14:15 +01:00
JC Brand
fdcab413f5 Use crypto.randomUUID() if available 2022-12-28 11:49:37 +01:00
JC Brand
3c6dd5d0ae Run npm update in src/headless 2022-12-28 10:18:14 +01:00
JC Brand
6494b34da3 Don't automatically log in again if the user manually logged out
Fixes #2759
2022-12-28 09:57:32 +01:00
JC Brand
447fe8ba08 Refactor the code related to storing SCRAM keys
- No need to create a new storage mechanism, just use `persistent`.
- Store SCRAM keys per JID
- Upon succesfull login, store the current session JID, so that we know who to fetch SCRAM keys for
- Only store SCRAM keys when the device is trusted

Fixes #3001
2022-12-28 09:56:41 +01:00
based-a-tron
8ab0b718de Added option to save SCRAM keys 2022-12-27 22:39:12 +01:00
JC Brand
a76393f216 Also handle 'normal' messages from roster contacts 2022-12-26 19:17:40 +01:00
JC Brand
e63ba2075f Use repeat directive to render roster and MUC occupant items
If we don't use `repeat`, a DOM node may be reused with different state
(e.g. the `model` it receives originally changes upon next render).

https://lit.dev/docs/templates/lists/#when-to-use-map-or-repeat

Fixes #2816
2022-12-13 10:04:13 +01:00
JC Brand
78a7841afb Don't duplicate disco items across two collections
We now no longer have an `.items` collection on a disco entity.
Instead, add a new API method `api.disco.entities.items` should be used.

This should solve the issue of the entities disappearing when reloading
the page.

Updates #2925
2022-12-02 22:50:06 +01:00
JC Brand
8c84e276ff Run npm update 2022-11-08 20:35:17 +01:00
JC Brand
a251608fc5 Fix race condition where waitUntilFeaturesDiscovered was resolved too early
When calling `api.supports(feature, entity_jid)`, it checks whether the entity
supports the feature or whether any of the sub-items on the entity
supports that feature.

However, on `DiscoEntity`, the `waitUntilFeaturesDiscovered` promise
didn't wait for the items on the entity to be fetched, and was therefore
resolved too quickly.

This caused the file upload button to not render.

Updates #2925
2022-11-08 20:03:37 +01:00
JC Brand
038a38cae0 Run npm update 2022-11-04 16:47:01 +01:00
JC Brand
d5deed0871 Release 10.0.0 2022-10-30 17:03:41 +01:00
dependabot[bot]
a5be19ad50 Bump dayjs from 1.11.3 to 1.11.6
Bumps [dayjs](https://github.com/iamkun/dayjs) from 1.11.3 to 1.11.6.
- [Release notes](https://github.com/iamkun/dayjs/releases)
- [Changelog](https://github.com/iamkun/dayjs/blob/v1.11.6/CHANGELOG.md)
- [Commits](https://github.com/iamkun/dayjs/compare/v1.11.3...v1.11.6)

---
updated-dependencies:
- dependency-name: dayjs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-30 10:51:26 +01:00
JC Brand
dbd36a0d75 Ran npm update and manually update to Strophe 1.6.0 2022-10-30 10:10:27 +01:00
JC Brand
eb9fd74c77 Provide error message instead of aesm URL
when encrypted media cannot be decrypted because it can't be downloaded.
2022-10-23 11:56:59 +02:00
JC Brand
63cc8411a5 Run npm update 2022-10-19 10:02:03 +02:00
JC Brand
ef16a52ced Make toggling of rooms list reactive and remove imperative code 2022-10-02 16:04:49 +02:00
JC Brand
e555469e3f Move clearSession function to utils 2022-09-29 14:26:54 +02:00
JC Brand
b4eb6c0994 Always enable carbons upon connection or reconnection
Previously we tried to remember whether carbons were enabled before by
saving a flag in the session storage, but apparently this resulted in
false positives and carbons then not being enabled.

With carbons not enabled, clients don't get sent messages.

I don't like the idea of enabling carbons every time the page reloads,
but the alternative is lost messages which is way worse.

I think the issue is that it's not possible to guarantee that the
session is always properly cleared. For example if Converse crashes, and
then the page is reloaded, the session will wrongly indicate that
carbons have been enabled, even though they won't be.
2022-09-29 14:26:54 +02:00
JC Brand
5760379e0a Only send out ping if we're actually authenticated
Fixes #2562
2022-09-20 15:01:55 +02:00
JC Brand
a4ee3085b7 MUC: Don't ping when we're not connected
Instead, wait for the `reconnection` event and then ping.
2022-09-20 15:01:51 +02:00
JC Brand
fbe86e5af8 Create an ElementView base modal and use it for all modals
Modals are now all web components and are opened by component name.
2022-09-16 10:33:47 +02:00
JC Brand
8378ce739b Remove unfurls for hyperlinks removed in a message correction 2022-09-12 10:05:54 +02:00
JC Brand
f9e6c3ff95 Fix groups auto-complete for add-contact modal 2022-09-12 09:28:37 +02:00
JC Brand
0489e0f902 Remove unused function 2022-09-01 17:28:29 +02:00
JC Brand
8ae4b6abd4 MUC: Set occupant ID from reflected message 2022-08-21 17:33:35 +02:00
JC Brand
ca3c8fc10b Fixes #3007
Bugfix: Links in message become text when the message is edited
2022-08-20 11:12:59 +02:00
JC Brand
e8b9681a15 MAM: Always query for newest MAM messages after cached ones have been fetched
The `_converse.connection.restored` check ensured that 1:1 chats
manually opened after tab reload would never get their MAM messages
fetched 🤦
2022-08-17 13:53:31 +02:00
JC Brand
51516e38f6 Remove duplicate trigger of afterMessagesFetched 2022-08-17 13:38:57 +02:00
JC Brand
de72d6bae3 MUC: Move constants to separate file 2022-08-17 12:53:41 +02:00
JC Brand
0d9561e666 MUC: When closing, only send read marker if we were entered
When using RAI, it's possible to close a MUC without it being entered.
2022-08-17 12:49:44 +02:00
Keith Maika
17e5804be7 Select the immediate body, not the one in fallback. 2022-08-13 10:00:40 +02:00
JC Brand
fd9e41a917 Fix failing test.
The fix from @joudinet was to call `this.items.create` on `DiscoEntity`,
however we still need to pass in the same `entity` model as before so that both
collections (`this.items` and `_converse.disco_entities`) have a
referene to the same model.

That way, when attributes like `.identities` are added on the entity,
it's available from both `this.items` and `_converse.disco_entities`.
2022-08-12 10:27:09 +02:00
Johan Oudinet
760f4f7dd1 Fix missing disco-items in session storage
This should fix #2925.
2022-08-12 10:07:12 +02:00
JC Brand
5231262bda Take from_real_jid into account when determining sender
of MUC messages.

This is safer than simply checking nicknames when the XEP-0421 occupant-id is not
available.
2022-08-12 09:43:49 +02:00
JC Brand
34927b5b77 Use occupant_id to get own occupant O(1) if available 2022-08-12 09:21:01 +02:00
JC Brand
7028286855 Restrict editing of MUC messages...
to ones with the same XEP-0421 occupant ID
2022-08-11 22:44:11 +02:00
JC Brand
342c75775b Save the user's XEP-0421 occupant ID on the ChatRoom 2022-08-11 15:47:09 +02:00
JC Brand
f1cc8c85f4 Rename the stanza TTL to stx to avoid name clashes 2022-08-11 15:30:51 +02:00
JC Brand
c5588e3c49 MUC: Features are fetched in join
due to the `await this.refreshDiscoInfo()` call in `join`.

So should be safe to remove the check whether features were fetched.
2022-08-11 15:12:55 +02:00
JC Brand
3d19def3e7 Wait for emojis to be initialized before sending a message 2022-08-11 14:31:28 +02:00
JC Brand
53521c2236 Import utilty function directly and use optional chaining 2022-08-11 10:42:00 +02:00
JC Brand
22170450b4 Stop using zipObject from lodash 2022-08-11 10:30:07 +02:00
JC Brand
f014db8b7a Update nick attr on ChatRoom when user nick changes 2022-08-11 10:23:16 +02:00
JC Brand
fe9345b7fc MUC: only allow corrections with a matching sender occupant-id
Also, don't render messages from a sender with a different `occupant-id`
as a followup message.
2022-08-10 14:53:18 +02:00
JC Brand
d2bdce51e8 Add a tagged template literal function stanza
For creating XML stanzas from template literals.
2022-08-10 14:50:12 +02:00
JC Brand
5f6e70289b Run npm update to update headless deps 2022-08-09 11:06:44 +02:00
JC Brand
71d1383604 Move code that sets active flag on session to initSession
It doesn't belong in the `converse-status` plugin and the event handler
doesn't get registered when all CSI-related timeouts are set to 0.
2022-07-25 11:59:25 +02:00