Commit Graph

448 Commits

Author SHA1 Message Date
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
45e989f048 Move converse-oauth to the community-plugins repo 2022-08-09 10:42:33 +02:00
JC Brand
d8ea42a845 Add XEP-372 URI as data attribute to mention element 2022-07-19 11:59:55 +02:00
JC Brand
605c02901a Fix yet more tests 2022-07-14 21:17:32 +02:00
JC Brand
4aab83c4af Remove unused method 2022-07-14 08:47:39 +02:00
JC Brand
5d3da20bd9 Remove/update old comments 2022-07-03 13:36:15 +02:00
JC Brand
a95c070c2b Set autoprefixer version to fix compilation error 2022-06-22 14:05:03 +02:00
JC Brand
ba7c6d7a50 Let HeadlinesHeading use CustomElement 2022-06-19 13:03:06 +02:00
JC Brand
7e2dd55c16 Use api.elements.define 2022-06-19 12:12:09 +02:00
JC Brand
8dc8b1d564 Insert only the MUC JID when clicking an auto-complete suggestion 2022-06-12 10:25:41 +02:00
JC Brand
d2b4f2e0f6 MUC search: no need to first fetch the form 2022-06-12 09:59:50 +02:00
JC Brand
320f11f795 Use XMPP to search for MUCs via search.jabber.network
Also refactor AutoComplete somewhat to not compute `this._list` too
eagerly and to also pass the query string to `this._list`.
2022-06-11 23:43:43 +02:00
JC Brand
4237e5b3ae Style the add-muc modal autocomplete
- Let it drop down to the bottom
- Add a border
- Let it scroll
2022-06-11 23:42:47 +02:00
JC Brand
8671afc4b1 Document converse-autocomplete and always add closing tag
Weird parsing issues happen when a closing tag is not present.
2022-06-11 23:42:47 +02:00
JC Brand
0316f073e0 Replace font icons with svg icons 2022-06-11 23:42:47 +02:00
JC Brand
1744dbc420 Move roomslist tests to the right plugin 2022-06-11 23:42:47 +02:00
JC Brand
eb8ebea920 Move bookmarks list tests into separate file 2022-06-11 23:42:47 +02:00
Sanskar Bajpai
1ad6de2dd6 AutoComplete: added converse-autocomplete suggestion to group chat query
this commit introduces autocomplete feature to the muc-list group chat dialog,
previously there was only an input field which displayed hardcoded servers.
2022-05-24 17:31:24 +02:00
Sanskar Bajpai
795a9a7e3e add-modal-test: replaced a mistyped jid 2022-05-24 17:04:38 +02:00
JC Brand
858a6051ac Refactoring of the headlines plugins
- Move template to relevant plugin
- Turn ElementView into CustomElement
- Use the terminology "Headlines Feed" instead of "Headlines Box"
- Break the `converse-headlines` plugin up into multiple files
- Fix CSS styling for headlines feeds for the Dracula theme
2022-05-13 16:49:45 +02:00
JC Brand
12a0d0e3cc Show roster contacts with subscription set to none
Remove the `allow_chat_pending_contacts` config option.
2022-05-13 10:19:52 +02:00
JC Brand
ab7e879261 Don't automatically convert OpenStreetMap URLs into geo: URIs in sent messages
Updates #1850 and #2914
2022-05-13 10:14:31 +02:00
JC Brand
a57853156e Use our own confirm dialog consistently 2022-05-12 23:23:24 +02:00
JC Brand
a3c0f90476 Don't use browser's confirm dialog when logging out
Refs https://github.com/conversejs/converse-desktop/issues/18
2022-05-11 09:13:17 +02:00
JC Brand
b5bcc05947 Create generatePreKeys function 2022-05-08 23:37:47 +02:00
HAMANO Tsukasa
bd579d8613 remove unnecessary } 2022-05-08 22:46:57 +02:00
JC Brand
ebd9474ac1 Add more ways to get VCard for occupant modal 2022-04-26 20:41:04 +02:00
JC Brand
b71a7ae2ac Turn ChatRoomOccupants and ChatRoomOccupant into classes 2022-04-26 20:33:54 +02:00
JC Brand
3c2eda4a1d Better documentation for getHeadingButtons 2022-04-25 09:58:27 +02:00
JC Brand
0a07cad2cb Move connection api into separate file 2022-04-25 09:48:08 +02:00
JC Brand
f93b30f7b3 Show spinner in controlbox when reconnecting 2022-04-24 11:18:09 +02:00
JC Brand
1915d70c41 Turn controlbox into a Lit element 2022-04-23 12:01:41 +02:00
JC Brand
059795c0f3 No need to log cache misses 2022-04-22 10:06:08 +02:00
JC Brand
0260e5f803 Fix infinite loop in service discovery
When there is a circular dependency between disco entities (via their
advertised `disco#items`), Converse went into an infinite loop because
even though there was a check whether an entity already existed, it
failed to add newly created entities to the global
`_converse.disco_entities` collection.
2022-04-22 09:39:47 +02:00
JC Brand
fb158e418b Show number of participants in sidebar 2022-04-20 09:59:57 +02:00
JC Brand
d4382fda19 OMEMO bugfix. Don't auto-create device list without JID 2022-04-20 09:52:17 +02:00
JC Brand
4c394c072e Don't wait for vcards before initializing the roster 2022-04-20 09:52:17 +02:00
JC Brand
699326547a Show MUC avatar 2022-04-20 09:52:17 +02:00
JC Brand
2a9a01bc32 Fix flashing of bookmarks on page load 2022-04-19 22:52:33 +02:00
JC Brand
ce22508344 Turn bookmarks list into a Lit component 2022-04-19 21:08:52 +02:00
JC Brand
230b72139a Set jid as id attribute for vcards, presence and roster contacts
This allows models to be retrieved from a dict instead of via array
traversal.
2022-04-19 09:28:06 +02:00
JC Brand
e492885ac0 Set jid as the id attribute of the VCards collection
This reduces lookup time for vcards greatly, since we don't can access a
map of ids instead of using `findWhere` through an array of models.
2022-04-16 00:15:27 +02:00
SilverYoCha
7cb86638b5 Fixing display problems with chatbox view with mobile view mode 2022-04-15 06:48:25 +02:00
JC Brand
2d5b0753e2 Remove local contacts not returned from a full roster response 2022-04-14 11:29:28 +02:00
JC Brand
8e1c3e47df Improve how the muc_domain setting is populated via disco
Remove brittle code that uses `querySelector` to get the rooms list model.
This code was causing a TypeError due to a race condition.
2022-04-09 10:57:55 +02:00
JC Brand
0c049dd364 Resolve fetched promise when clearing messages
This fixes an issue where chats stay empty after reconnection when
`clear_messages_on_reconnection` is `true`.
2022-04-08 11:22:21 +02:00
SilverYoCha
b331405658 Bugfix: selected emoji inserted into all open chat boxes
when in overlay view mode.
2022-04-08 08:21:19 +02:00
JC Brand
9d4382c754 Move emoji functions to utils.js
Also, move various emoji utility methods out of @converse/headless, and
thereby remove the dependency on lit-html
2022-04-06 23:07:16 +02:00
JC Brand
af342456c5 Add enterkeyhint attribute to message form inputs 2022-04-06 09:55:56 +02:00
JC Brand
32a443408a Bugfix. GIF unfurl images not loading...
and causing `TypeError: this.shouldRenderMedia is not a function`
2022-04-04 16:31:32 +02:00
JC Brand
6b1845ff39 Release 9.1.0 2022-04-02 19:31:37 +02:00
JC Brand
fd991846f4 Replace ElementView with CustomElement for RoomsList 2022-03-30 09:50:36 +02:00
JC Brand
523566c218 Move MUC tests into their own files 2022-03-30 09:48:39 +02:00
JC Brand
d570b6095e Don't make the connection URL input required
It might be that it's shown in response to a failed XEP-156 lookup
because the user mistyped.

In which case the user can just correct the JID and try again, without
entering a connection URL.
2022-03-25 08:54:38 +01:00
JC Brand
fca275b7c9 Refactor the login form
Render the form based on `api.settings` instead of its own model.

When the login form is submitted, save the JID, password and connection
URL to `api.settings`.

Set the `service` on the Strophe connection object just before
connecting for the first time, otherwise a user supplied URL (via the
login form) is never used.

New API setting: show_connection_url_input
2022-03-24 23:15:30 +01:00
JC Brand
e160ee2ed5 Add JID and password values to login form (if available) 2022-03-24 21:05:40 +01:00
JC Brand
fbfd6c3ac4 Updates #2849: add test for incoming MUC OMEMO corrections 2022-03-23 21:30:53 +01:00
JC Brand
7355c2c5fe Updates #2849
Add test case for incoming OMEMO message corrections.

The correction was being ignored because the parsed `msgid` of an
incoming correction was set to the `msgid` of the message being
replaced.
2022-03-22 23:12:45 +01:00
JC Brand
d2b9c954d9 MUC: move some tests to headless plugin 2022-03-14 20:35:01 +01:00
JC Brand
f9a9d327d1 Use body as attribute for the message body text
For error messages we still use the `message` attribute, since error
messages generally don't have a body, and if one does, it likely refers
to the `body` of a rejected message that the error refers to.

We're still setting both `body` and `message` attributes, but usage of
`message` for a normal `chat`, `groupchat` or `headline` stanza should
be considered deprecated.
2022-03-14 09:28:34 +01:00
JC Brand
d2622f6fed Fixes #2557
Add the ability to send OMEMO corrections.

Refactor how OMEMO messages are sent to avoid having to override
`sendMessage` and thereby also allowing corrections of OMEMO messages to
be sent out.

Add two new hooks.
- getOutgoingMessageAttributes
- createMessageStanza
2022-03-13 10:02:34 +01:00
JC Brand
731e98b07c OMEMO fixes for completely new user
Fix bugs related to there not being a server-side device list (not even an empty one) for a new user.
2022-03-13 10:02:34 +01:00
JC Brand
89a3c81a19 OMEMO: don't wait for all device lists...
to be fetched from the server before triggering OMEMOInitialized.

For some contacts, the IQ to fetch the device list never receives a
response. IQ stanzas take 20 seconds to timeout, which means that all
OMEMO operations are blocked for 20 seconds (because everything waits
for `OMEMOInitialized`).

Create a new API method `api.omemo.devicelists.get` and use that to
fetch and `await` for any devicelist. That way we lazily wait for
devicelists to be fetched from the server and can continue with other
OMEMO operations unrelated to users who's clients don't respond to
devicelist queries.
2022-03-10 20:51:04 +01:00
JC Brand
2133241998 CSS: Fix chat title width and elipsis color
in overlayed view mode.
2022-03-10 20:51:04 +01:00
JC Brand
e52056bb33 Refactor the emoji-picker somewhat
Trigger an `emojiSelected` event instead of manually calling `insertIntoTextArea` on the `converse-message-form` a component.
This loosens the coupling between the emoji picker and `converse-message-form`.

Call `disableArrowNavigation` when the emoji-picker is disconnected from
the DOM or when escape is pressed. See #2754
2022-03-09 12:44:33 +01:00
JC Brand
c42bd90c9d Don't clear textarea on escape, unless we're correcting a message 2022-03-09 11:24:32 +01:00
JC Brand
b248803a4b Fixes #2822 2022-02-20 19:17:52 +01:00
JC Brand
7b63b7b30f Make various error messages ephemeral.
Also make it possible to specify the timeout for an ephemeral message.
2022-02-19 23:11:22 +01:00
JC Brand
ca20f687bf minimize: initialize chat via event instead of override 2022-02-19 23:10:17 +01:00
JC Brand
bbef09346a Various CSS fixes and use converse-icon for nav button 2022-02-19 23:09:39 +01:00
JC Brand
1c8085f00e CSS: Set modal header color for error alerts
Also fix various element colors for Dracula theme
2022-02-19 21:32:25 +01:00
JC Brand
39e9ed8fe4 Updates #2733
Rather use `false` for a bool
2022-02-15 14:48:01 +01:00
JC Brand
22a7e1b35f Updates #2733
Set `is_error` to back to undefined
2022-02-15 14:46:00 +01:00
JC Brand
9a95c2d048 Normalize URL path
Udates #2814

Otherwise `"` gets escaped as `"` by lit-html which is not correct.
2022-02-15 14:38:40 +01:00
JC Brand
9a2424fa26 Fixes #2814. Links are mangled on open/copy 2022-02-15 14:10:40 +01:00
JC Brand
b44e1c82f0 Updates #2733
- Clear timer when a messages changes from epehemeral to non-ephemeral
- Set MUC occupant on `groupchat` message when `type` changes to `groupchat` (from `error`)
- Set roster contact on `chat` message when `type` changes to `chat` (from `error`)

Thanks @afriedmanGlacier
2022-02-15 12:23:46 +01:00
JC Brand
a07bd7c817 Use SVG icons for refresh button and toggle switch 2022-02-15 11:17:41 +01:00
JC Brand
85d75a5494 Fixes #2745. Wraps MUC details in converse-rich-text
Also fixed an issue where the `config` model on the MUC wasn't being
properly persisted and fetched.
2022-02-15 11:17:33 +01:00
JC Brand
7c7b667745 MUC: Register handler to parse for commands in the plugin index.js 2022-02-14 15:17:05 +01:00
JC Brand
38519a6261 Updates #2733
Properly handle the same OMEMO message being recieved twice, with the
2nd one failing to decrypt.
2022-02-14 12:59:49 +01:00
JC Brand
f6c524f760 Move MUC modals to the muc-views plugin 2022-02-14 12:59:49 +01:00
JC Brand
7f40d1a2f2 Fix #2627 2022-02-10 13:36:22 +01:00
JC Brand
066d29d637 Fix alignment of close button for MUC sidebar 2022-02-10 12:09:02 +01:00
JC Brand
12a2354d9e CSS: Fix chat heading colors 2022-02-09 21:38:30 +01:00
JC Brand
d8f6a16936 Avoid unnecessary call to requestUpdate and use updateComplete 2022-02-09 21:22:38 +01:00
JC Brand
f4fdc36d31 Add modal for changing your nickname...
once you're already in a MUC.
2022-02-09 20:05:30 +01:00
JC Brand
ba52defdae Move nickname tests into a new file 2022-02-09 20:05:30 +01:00
JC Brand
505416a59e Let bookmarks be created/removed via a modal 2022-02-09 20:05:30 +01:00
JC Brand
9d250c3cbf Fix failing test due to converse-icon being used 2022-02-09 20:05:30 +01:00
afriedmanGlacier
3d8a583101
Wait for parseMessages before queuing to UI (#2803)
* parse messages before queuing

* update CHANGES

* remove unused variable

Co-authored-by: aFriedmanGlacier <afriedman@glaciersecurity.com>
2022-02-05 22:02:24 +01:00
JC Brand
0f648ed1eb Don't re-initialize OMEMO on reconnection
Promises only get recreated upon logout, not reconnection.

However OMEMO was getting re-initialized on reconnection and
`_converse.omemo_store` was also deleted.

This caused a race condition where an incoming MAM message would cause
`parseEncryptedMessage` that then throws an AttributeError because
`_converse.omemo_store` is undefined because OMEMO isn't yet
initialized.

Waiting for the `OMEMOInitialized` promise doesn't help because it's
still the old (already resolved) promise from before the reconnection.
2022-02-02 23:18:45 +01:00
JC Brand
bef2cbb462 Use SVG icons and tweak message padding 2022-01-31 23:00:26 +01:00
JC Brand
8dcacd41bf Add hover color for svg icons 2022-01-29 12:12:36 +01:00
JC Brand
dd539c7675 CSS: fix unread msgs indicator in Dracula theme
Also try to create some initial structure with the CSS properties to
make theming easier
2022-01-29 11:19:00 +01:00
JC Brand
818ad0955a Add ability to switch between dark and light modes 2022-01-28 21:20:12 +01:00
JC Brand
ac473fd297 Add dark theme Dracula
https://draculatheme.com
2022-01-28 20:28:48 +01:00
JC Brand
7c51147023 Use the parseMessageForCommands hook to also parse MUC commands
Also fix issue where `model.getAllowedCommands()` prevents 3rd party
implementations.
2022-01-28 12:40:21 +01:00
JC Brand
003a90c71c Don't explicitly trigger the hook parseMessageForCommands
inside `parseMessageForMUCCommands`.

If the function doesn't find any core MUC commands, it calls
`parseMessageForCommands` which will trigger the hook.

I think it's appropriate to give built-in commands preference above
commands by 3rd party plugins and this also solves the issue of the hook
being triggered twice (once in `parseMessageForMUCCommands` and
then again in `parseMessageForCommands`).
2022-01-27 19:12:35 +01:00
JC Brand
d06761e2a8 Fix failing tests 2022-01-27 19:12:35 +01:00
Dele Olajide
c83cc69cef Implement new hook parseMessageForCommands for plugins to add custom commands 2022-01-27 14:34:20 +01:00