Commit Graph

123 Commits

Author SHA1 Message Date
JC Brand
b78c19f6f2 Fix showing of HTML5 notifications for MEP messages 2021-09-08 17:30:30 +02:00
JC Brand
8aa16ea0be Fix broken import 2021-09-08 10:52:37 +02:00
JC Brand
8f34065fc0 Also create MEP messages received from a MAM archive 2021-09-08 10:22:26 +02:00
JC Brand
286ab1ad83 Fixes #2633. 2021-09-06 21:56:56 +02:00
JC Brand
90ea092e4d Register a XEP-0316 MEP handler
Add caps element to the MUC join presence, so that the MUC MEP node can
know whether we're interested in receiving MEP messages.

Create info messages for any `conference-info` tags that contain `activity` tags.

Check for both `headline` and `normal` MEP messages (even though the XEP
only show `headline` examples), since `normal` messages can be archived
in MAM, but `headline` ones not.

Update the XEP-0372 reference-parsing code to take the `anchor`
attribute into consideration, specifically to check which text element
the reference applies to.

Add support for rendering XEP-0372 mentions in "info" messages and for
triggering HTML5 Desktop notifications for such mentions.

Background:
-----------

XEP-0316 describes a way for a MUC to send out PEP-like messages to MUC
participants. This feature can be used to describe custom activity happening
in the MUC.
2021-08-31 11:23:49 +02:00
JC Brand
7e88ffd098 Move MUC functions to utils 2021-08-31 11:23:49 +02:00
JC Brand
d0627f800c Clear unread message counters when chat becomes visible 2021-07-30 09:56:17 +02:00
JC Brand
0242fdb020 Extract moderator tools functionality and put it in a component
This makes it easier for 3rd parties to embed it in other modals (besides the bootstrap modal).
2021-07-27 12:53:39 +02:00
JC Brand
60826ac6c6 Move functions out of core.js 2021-07-19 16:40:40 +02:00
JC Brand
8931c61876 Prevent attribute error on timeout 2021-07-19 16:40:40 +02:00
JC Brand
f2aa39e1c3 Identify media URLs during message parsing 2021-07-06 13:35:22 +02:00
JC Brand
01efb02f9e Make sure XEP-0363 urls are also OMEMO encrypted
by re-using `ChatBox.prototype.sendMessage`.

updates #1182
2021-07-03 00:22:03 +02:00
JC Brand
6665bef76c Fix failing tests
Handle missing message model (happens during tests)
2021-06-29 16:00:10 +02:00
JC Brand
956a890b94 Don't reject on error in sendTimedMessage
It's the only way I could get a failing test (due to the Jasmine upgrade AFAIK) to pass.

I don't understand why this happens, given that the promise has a
`catch` clause in `retractOwnMessage`, but for some reason the promise
rejection gets caught by Jasmine, causing the test to fail.
2021-06-29 15:59:49 +02:00
JC Brand
767d5ec91d fix failing test 2021-06-29 15:59:49 +02:00
JC Brand
335a491e0d Stop using the Jasmine "done" callback 2021-06-29 15:59:49 +02:00
JC Brand
cf11f2588c Rename method 2021-06-18 11:35:38 +02:00
JC Brand
b6f2662ad7 Set 'scrolled' flag on model.ui
This prevents it from being persisted across page loads and makes more
sense logically.

Also move markScrolled to utils and MUC unread messages indicator to bottom panel.
2021-06-17 11:39:20 +02:00
JC Brand
5ea9564cc3 Add new configuration setting prune_messages_above
If set to a positive integer, the chat history will be kept to that size
by removing older messages.

This happens as new messages come in (as long as the chat isn't scrolled up)
and when the user scrolls down.

Also add the `pruning_behavior` setting
2021-06-17 11:39:20 +02:00
JC Brand
ff1b6d3adf MUC: Don't first check if we're registered before unregistering
The IQ stanza being sent to check was in any case incorrect and it
doesn't seem necessary.
2021-06-10 10:40:45 +02:00
JC Brand
9e4a4ba2ff Add example for retractOtherMessage 2021-06-07 10:10:19 +02:00
JC Brand
ff233a5b1c Merge branch 'jcbrand/declarative-scrolling' 2021-06-04 12:59:52 +02:00
JC Brand
f3efbba26c Create converse-message-form component
More work on making bottom panel sub-components declarative

- Handle auto-completion in the converse-muc-message-form element
- Make message limit indicator a component
- Rename template
2021-06-04 12:53:03 +02:00
Christoph Scholz
8701708b53 fix /nick command not working 2021-06-03 17:29:45 +02:00
JC Brand
ec93e2fff3 Render chat messages loading spinner declaratively
instead of imperatively.

Add new non-persisted UI model for rendering UI changes. Currently only
being used for rendering the spinner
2021-06-03 00:02:33 +02:00
JC Brand
59d55b3526 Add option to deregister nickname when closing a MUC
By setting `auto_register_muc_nickname` to `'unregister'`
2021-06-02 22:06:57 +02:00
JC Brand
994e528b45 Bugfix. Properly escape | character in mentioned nicknames 2021-05-19 14:47:20 +02:00
JC Brand
06f03fc884 MUC: Store disconnection data on the session 2021-05-13 15:45:12 +02:00
JC Brand
19b34231d4 JSDoc improvements 2021-05-13 11:44:19 +02:00
JC Brand
3d58b67517 Use @converse/openpromise 2021-04-28 18:35:08 +02:00
JC Brand
57ccf4c20e Batched writes to IndexedDB
- Update to the latest @converse/skeletor (which uses mergebounce to batch writes)
- Flush storage before logging out
- Flush when reloading the tab
- Create initStorage method
2021-04-28 16:53:50 +02:00
JC Brand
4c804fcf2d Wait on chatBoxesFetched in API
Otherwise we can run into race conditions when using IndexedDB with
mergebounce
2021-04-28 12:05:40 +02:00
JC Brand
7b7ec45db8 Move disco plugin into folder and import lodash utilities separately 2021-04-21 11:03:22 +02:00
JC Brand
b2f09f64c3 Use API to get room 2021-04-19 15:23:58 +02:00
JC Brand
fdde708327 Add a new MUC room state: converse.ROOMSTATUS.BANNED
This makes it easier to distinguish between being banned from a room, or
being disconnected for other reasons.
2021-04-15 12:34:00 +02:00
JC Brand
b439ae1cc4 Bugfix. Don't set fake nick...
when creating occupant from affiliation change stanza.

This means that when a presence for that occupant arrives, a duplicate
occupant is created (presumably because the original can't be find due
to the wrong nick being set).
2021-04-14 18:02:41 +02:00
JC Brand
cd9977c94e Add an API for setting affiliations
This allows us to set affiliations in MUCs without having to first enter
the MUC in order to create a `ChatRoom` instance.
2021-04-14 10:44:31 +02:00
JC Brand
383f5c1d60 Extract affiliation-related methods out of the ChatRoom model
and put them together in a utils file
2021-04-14 10:44:31 +02:00
JC Brand
3c99f1f840 Fixes #2348
Don't automatically hide the first MUC opened in uni-view
2021-03-22 11:39:17 +01:00
JC Brand
d8daedea0d Render the MUC view component declaratively 2021-03-15 12:34:56 +01:00
JC Brand
541613d1fe Add more OGP metadata attributes to save 2021-03-04 17:56:24 +01:00
JC Brand
64fd0ebcf6 Unfurls: Remove URL check
Url parameters mean that we don't get a match even when the URLs
actually match.

Could potentially use URI.js but gets cumbersome and since we restrict
to metadata coming from the MUC service (which we trust) I think it's OK
to remove it.
2021-03-02 11:03:35 +01:00
JC Brand
9bac86fe1a Don't add the same OGP metadata multiple times 2021-03-01 21:31:57 +01:00
JC Brand
16e1f95790 New config setting: muc_show_ogp_unfurls 2021-03-01 14:00:28 +01:00
JC Brand
426bf1d631 Tighten up security around unfurls
Dont render OGP metadata:
- for URLs not actually found in the original message
- from MUC participants (only from the MUC itself)
2021-03-01 11:35:12 +01:00
JC Brand
ccfa00d7b8 mod_ogp now sends messages with type="groupchat" 2021-02-23 11:07:00 +01:00
JC Brand
16edc2954d Add support for rendering unfurls via Prosody's mod_ogp
See here: https://modules.prosody.im/mod_ogp.html
2021-02-22 17:55:20 +01:00
JC Brand
9ce4092a7c Turn the bottom panel into a custom element 2021-02-12 14:32:55 +01:00
JC Brand
95c14e5a26 Don't pass chatview object to converse-chat-content
and any child components.

This makes it easier to use these components independently of one
another and the overarching view.
2021-02-09 16:40:00 +01:00
JC Brand
7abc81f8a4 MUC: Wait until occupants are fetched before updating them 2021-02-09 15:48:21 +01:00
JC Brand
ea6e370347 MUC: Fix error message logging 2021-02-09 15:48:21 +01:00
JC Brand
bb317d1abb Combine RoomsPanel with RoomsList element 2021-02-09 15:48:21 +01:00
JC Brand
581f892613 Add JSDoc string 2021-02-06 11:26:25 +01:00
JC Brand
5feaab9a95 MUC: Add test for showing cached messages before entering 2021-02-02 15:12:31 +01:00
JC Brand
2c7b220453 RAI: Always send the presence to enable RAI when leaving a MUC
Looking at the Prosody code, it appears to be cheap since
Prosody will do nothing if you're already registered and this works
around a bug in mod_muc_rai where events aren't fired for each resource
of the same joined nick joining or leaving the MUC.
2021-01-15 13:55:40 +01:00
JC Brand
8bd2114d8a MUC has its own method for sending markers 2021-01-15 11:39:09 +01:00
JC Brand
58c5e9676a Handle forwarded mentions coming from the MUC, not the host 2021-01-08 18:25:36 +01:00
JC Brand
bb8c7423b6 Ignore XEP-0437 indicators and forwarded mentions in a joined MUC
Otherwise the mentions will be counted twice.
2021-01-08 10:38:03 +01:00
JC Brand
11023dfef9 Don't clear occupants when leaving a MUC, only when closing it
Otherwise, when leaving as part of RAI and in a MUC where we only get
presence info based on probes, we lose occupant info that doesn't get
recreated when we rejoin.
2021-01-07 15:08:29 +01:00
JC Brand
3f47c4d3dd Use real JID in XEP-0372 references only when the MUC is non-anonymous 2021-01-04 14:24:23 +01:00
JC Brand
62dbb1062f Add support for protoXEP: MUC mention notifications 2020-12-21 14:02:43 +01:00
JC Brand
6b9c718df7 RAI: Handle MUCs that start out hidden
When a MUC starts out hidden, we first need to join in order to find out
whether we're affiliated before we can know whether we should enable RAI
or join the MUC as usual.
2020-12-21 12:07:00 +01:00
JC Brand
986f7550f3 Clear messages upon reconnection as late as possible
To avoid a long empty flash while new messages are being fetched again.
2020-12-17 16:23:47 +01:00
JC Brand
4349b016eb MUC: Only clear messages when MUC is left intentionally
by the user, and not as part of cleanup during logout or when leaving
automatically in order to receive XEP-0437 activity indicators.
2020-12-17 14:00:18 +01:00
JC Brand
18e6ebe9af MUC: Bugfix, don't set state to entered on unavailable presence 2020-12-17 13:04:24 +01:00
JC Brand
594332181b Call 'clearMessages' 2020-12-17 13:04:24 +01:00
JC Brand
2121766623 More RAI improvements
- Add test for incoming RAI message
- Only enable RAI if the user is affilated in MUC being left
- Handle error presence indicating a resouce-constraint
- Don't unregister stanza handlers in `leave`, since we still want to
  listen to RAI-related stanzas. Instead unregister upon the `destroy`
  event.
2020-12-17 13:04:24 +01:00
JC Brand
eed9ee8033 RAI: Add tests 2020-12-16 13:48:14 +01:00
JC Brand
e80afbfe39 Move MUC and stanza utils into shared and plugin-specific files 2020-12-14 16:30:13 +01:00
JC Brand
e8eea6324e MUC: Send XEP-0333 markers with the MUC stanza id
See: https://xmpp.org/extensions/xep-0333.html#rules-muc
2020-12-14 16:30:13 +01:00
JC Brand
c457081597 WIP: Add support for XEP-437: Room Activity Indicators
- Send marker for last message before leaving and before subscribing to RAI
- clear cache of RAI-subscribed domains on reconnection
2020-12-14 13:11:24 +01:00
JC Brand
14c9b2f4ae Clear message cache when closing a MUC 2020-12-11 13:57:16 +01:00
JC Brand
c0fafcec70 Move converse-muc into a folder 2020-12-08 09:50:17 +01:00