Commit Graph

685 Commits

Author SHA1 Message Date
JC Brand
fb9fe280ac Updates to how dupes are detected.
- Collapse 3 different loops into one.
- Check all saved stanza ids in the parsed attrs, not just the archive id
- Remove check for archive id in converse-mam since it just duplicates what's now being done in converse-chat
- Don't use disco to check for support, XEP-359 mandates that services SHOULD advertise support,
  which is not a strong enough guarantee that they do.

updates #1856
2020-02-07 12:35:45 +01:00
JC Brand
746fe441e2 Updates the message parsing.
Only set `id` once we've actually parsed the sender attributes,
otherwise `attrs.from` is `undefined`.

Use `Array.prototype.reduce` to generate stanza_ids attributes map.

Add `from_muc` attribute which contains the MUC JID
2020-02-07 12:12:38 +01:00
JC Brand
d2b6b41128 emoji-picker: Make sure that emojis as images are rendered properly 2020-02-06 16:27:44 +01:00
JC Brand
a1670462ca Remove jquery and undersscore shims 2020-02-06 14:51:50 +01:00
JC Brand
7279f08a34 Update to newer skeletor which can return a promise on create 2020-02-03 23:24:44 +01:00
JC Brand
f78837cbc5 Refactor identification of duplicates...
to rely on the parsed stanza attributes

This was to fix a bug whereby a full stanza was used to query for 1:1
messages with a full JID when the bare JID is stored.

We now are sure that the attributes we're using to query for duplicates
are the same attributes that get saved for a messages.
2020-02-03 23:24:44 +01:00
JC Brand
73fa24a844 headlines: move view code into converse-headlines-view.js 2020-01-30 18:18:27 +01:00
JC Brand
29aed314c1 Remove Backbone
* Remove backbone as NPM deps and from docs
* Remove backbone stuff from webpack
2020-01-30 17:36:55 +01:00
JC Brand
9fb2056753 Move MUC invite widget into a modal 2020-01-30 17:36:55 +01:00
JC Brand
c6ac03e94e Fix linting errors 2020-01-30 17:36:55 +01:00
JC Brand
d32c4c1f61 muc-views: replace VDOMView with HTMLView 2020-01-30 17:36:55 +01:00
JC Brand
11e219dd41 Update copyright 2020-01-30 17:36:55 +01:00
JC Brand
ad93407907 Replace modal templates with lit-html components 2020-01-30 17:36:55 +01:00
JC Brand
a8104d7498 Add Skeletor as dependency 2020-01-30 17:36:55 +01:00
JC Brand
50e6c8a082 roster: refactor to use async/await 2020-01-30 17:36:55 +01:00
JC Brand
b08f5d355b roster: avoid race-condition by waiting for contacts to be fetched
before creating any new ones
2020-01-30 17:36:55 +01:00
laszlovl
cde6b093c0 Fix incrementMsgCounter cleaning up after itself 2020-01-27 17:53:36 +01:00
Christoph Scholz
a472a0806e show headline messages in controlbox 2020-01-23 11:32:15 +01:00
JC Brand
bda704901f emoji-views: lazily render picker only once user clicks to open 2020-01-22 15:00:16 +01:00
JC Brand
f3472e1b9f emoji: Add initialize API method and call when chat view gets created 2020-01-22 13:20:59 +01:00
JC Brand
685c9585f4 Fix linting error 2020-01-21 14:06:47 +01:00
JC Brand
b0a9782d31 emoji: Lazy load the emoji JSON
Only load it once the first chat has been opened.
2020-01-21 12:45:34 +01:00
JC Brand
161cbec0d8 For forbidden errors, show error message from server 2020-01-17 14:44:05 +01:00
JC Brand
aa86a8be32 muc: Store room configuration (e.g. disco#info fields) on the MUC
This will make it easier to add config-based functionality, such as
allowing/showing the `/topic` slash command only to those users who are
allowed to set the subject.
2020-01-16 15:28:02 +01:00
JC Brand
929a00e1cd Fixes #1836 2020-01-16 13:48:46 +01:00
JC Brand
9ce315dece Bugfix. Handle stanza that clears the MUC subject 2020-01-14 10:07:23 +01:00
Christoph Scholz
40726e06e9 A user can now add himself as a contact 2020-01-13 10:30:00 +01:00
JC Brand
496e5ba46d Fix linting error 2020-01-13 09:00:08 +01:00
JC Brand
2a3ca93256 core: don't use Chrome-only check for web auth support 2020-01-12 01:35:44 +01:00
JC Brand
22ff93c3a7 core: Import individual lodash methods
and use some native ones instead
2020-01-12 01:08:37 +01:00
Christoph Scholz
36e56052bc don't log error if user has no bookmarks 2020-01-10 21:12:59 +01:00
JC Brand
9c5fc2e4d3 Use package.json files to specify more precisely what gets packed 2020-01-10 13:29:42 +01:00
JC Brand
e866248227 Don't include vim temp-files in release tarball
and bump post-release version number
2020-01-10 13:04:05 +01:00
JC Brand
cd60614f88 Release 6.0.0 2020-01-09 17:15:43 +01:00
JC Brand
4f4b10d2a3 muc: initialize occupants early to avoid timing issues...
in converse-omemo which relies on `chatbox.occupants` existing in the
`add` handler.
2020-01-09 17:07:31 +01:00
JC Brand
4018dd959e Fixes #1764: Incorrect URI encoding in references 2020-01-09 14:59:45 +01:00
JC Brand
ef1f16c186 Fixes #1767: Remove JID so that credentials_url is called...
when the user logs out and then in again
2020-01-09 11:05:37 +01:00
JC Brand
995f2a9997 Add arrow navigation to the emoji picker 2020-01-07 15:47:05 +01:00
JC Brand
2b213d0561 log: properly log to the set level 2020-01-06 10:40:18 +01:00
Yaskhan
1653c1ae92 Update converse-mam.js
I think why do not come archives from group chats, and it turns out that you need to add "groupchat" in options. I spent half an hour searching in the documentation, and half an hour searching in the convers tests. And finally found in tests.
2019-12-26 15:56:04 +02:00
JC Brand
d8e561ef7e Fix linting errors 2019-12-20 16:02:53 +01:00
JC Brand
9b4276721c Remove unnecessary await statement 2019-12-19 13:12:12 +01:00
JC Brand
da319604b6 Fixes #1735: Chatboxes stay empty after logging out and in again
The problem was that the `emojisInitialized` promise was re-created upon
logout and then no longer resolved upon subsequent login.

The `_converse.api.promises.add` method now takes another parameter
`replace` which determine whether it should be replaced upon logout or
not.

The `emojisInitialized` promise will now not get replaced.
2019-12-18 16:09:44 +01:00
JC Brand
8b6c902c4c Set VCards via events, thereby reducing coupling
- Rename `chatRoomOpened` event to `chatRoomViewInitialized`
- Rename `chatBoxInitialized` to `chatBoxViewInitialized` and trigger only for `ChatBoxView` instances.
- New event `headlinesBoxViewInitialized`
- Trigger the `chatBoxInitialized` event when a new `_converse.ChatBox` is opened.
2019-12-18 15:20:51 +01:00
JC Brand
b0e66232d3 Fixes #1253: Show contacts with unread messages at the top of the roster 2019-12-18 11:42:26 +01:00
JC Brand
03b7ae0a30 Improvements to how things are stored.
- Use the bare JID as indexedDB dataStore
- Collapse localStorage and indexedDB stores into one `persistent` store.
- When testing, only clear test data
2019-12-17 13:59:43 +01:00
JC Brand
4aa6b728cf muc: wait for restoreSession 2019-12-11 16:20:08 +01:00
JC Brand
0f63c84d5b core: properly clear cache in clearSession
Bump to latest backbone.browserStorage which adds the `clear` method
2019-12-11 15:44:56 +01:00
JC Brand
c379807d4c muc: Move code into restoreSession method 2019-12-11 10:06:26 +01:00
JC Brand
f3a1351a42 muc: loosen isJoined criteria
Handle any `error` IQ result or timeout from a MUC ping as indication that we're no longer joined.
2019-12-11 10:06:03 +01:00
JC Brand
a4567ee075 muc: Store connection_status in session storage
Otherwise we might run into a situation where a very old,
cached MUC that's being restored has `connection_status` set to ENTERED
(and the user happens to be in the MUC via another client)
and then restores cached messages without taking
`clear_messages_on_reconnection` into account.
2019-12-11 08:10:27 +01:00
JC Brand
09b085be6e muc: no need to override tearDown
we already listen for `beforeTearDown` and do what's necessary there.
2019-12-11 08:10:25 +01:00
JC Brand
3d3738f3be muc: refactor MUC joining
We now distinguish more clearly between joining and re-joining a MUC.

The `enterRoom` method has been refactored away.

Instead, `join` or `rejoin` should be used, depending on the circumstances.

Don't fetch cached occupants in the `initialize` function, instead, only fetch
them if we're restoring a MUC that we're still connected to.

If we're not restoring a still-connected MUC, then we clear the
occupants cache, and the messages cache if `clear_messages_on_reconnection` is `true`.

updates #1807
updates #1808
2019-12-09 17:17:33 +01:00
JC Brand
7bf39a092f muc: move message handler into own method 2019-12-06 13:09:09 +01:00
Dele Olajide
890db3427f Handle message notifications about affiliation change for users not in a room
See https://git.happy-dev.fr/startinblox/components/sib-chat/issues/96
2019-12-06 12:55:07 +01:00
JC Brand
c646879cca Ping the server when the tab becomes visible 2019-12-06 10:57:52 +01:00
JC Brand
5b507ec74e muc: check that we're still connected if the tab becomes visible
Otherwise Converse might only realise we're no longer in the room when
the user tries to interact with it.
2019-12-05 22:29:37 +01:00
JC Brand
7866247f5d dragresize: Unregister global event handlers 2019-12-05 21:02:06 +01:00
JC Brand
b1c9af3ed0 Various improvements to resizing of occupants view.
- Remove need for the `converse-mouse-events` plugin.
- Register `mousemove` and `mouseup` handlers only when necessary and only inside the MUC DOM element.
- Restore converse-dragresize to roughly it's original state before work started on this.
- Move `applyDragResistance` to utils.

updates #1640
2019-12-05 09:32:48 +01:00
JC Brand
0c4da63e07 Merge branch 'pullRequest_SkalierungTeilnehmerListe' of github.com:worlword/converse.js 2019-12-04 14:55:47 +01:00
JC Brand
dffe3d1a26 smacks: Set enable_smacks to true as default 2019-12-03 13:54:28 +01:00
JC Brand
c3447dd205 New config option: `persistent_store`
Allows for using IndexedDB as the persistent store, instead of localStorage
2019-12-03 13:51:57 +01:00
JC Brand
5232019ed7 roster: Replace lodash methods with native ones 2019-12-03 12:37:26 +01:00
JC Brand
7fc3151e56 Fixes #1783 2019-12-03 11:31:28 +01:00
JC Brand
d2cf29bce4 muc: One more place to fetch messages
When restoring an already entered room from cache.
Otherwise we end up with an empty history.
2019-11-29 17:04:54 +01:00
JC Brand
1c116b0385 mam: distinguish between messages fetched before and after MUC join 2019-11-29 16:17:48 +01:00
JC Brand
53ced8c763 muc: Don't restore messages from cache...
if we're just going to clear them again

This avoids flashing of messages followed by a spinner.
2019-11-29 09:58:38 +01:00
JC Brand
d7d810ba89 Improvements to rendering MUC MAM logs before joining
- Add config variable `muc_show_logs_before_join`
- Restore nickname form for the original use-case (when not showing MAM logs before joining).
- Render nickname form in the `.muc-bottom-panel` when showing MAM logs (instead of in a modal)
- Show a message when there aren't any archived messages to show
- Fix converse-mam so that chat logs are properly fetched before entering a MUC

closes #1266
2019-11-29 09:23:15 +01:00
JC Brand
c836eb401f disco: Import individual lodash methods 2019-11-26 22:04:50 +01:00
JC Brand
762717dd38 Bugfix. streamFeaturesAdded triggered too soon.
`streamFeaturesAdded` should only be triggered once we've received them
from the server.

This appears to be a timing bug, likely introduced by the IndexedDB
refactoring.
2019-11-26 22:04:50 +01:00
JC Brand
e23c7ce543 More retraction updates
- Retracted moderated message are not editable
- Use "removed" for user-facing text
2019-11-26 22:04:38 +01:00
JC Brand
13ffe5a667 Various smaller retraction related fixes and improvements 2019-11-26 12:16:48 +01:00
JC Brand
53df5d6b49 Fix whitelisting and dependencies on the headline plugins 2019-11-22 14:38:09 +01:00
JC Brand
3ffb56baa2 Replace debug configuration setting with loglevel 2019-11-22 14:23:19 +01:00
JC Brand
2e3cc12d9a Bugfix. Only remove modals when disconnected
not while tearing down, otherwise the modals get removed while
reconnecting and we have stale references to modals no longer in the
DOM.
2019-11-22 13:50:36 +01:00
JC Brand
025cdbf18f Check for support before allowing message moderation 2019-11-22 13:50:36 +01:00
JC Brand
ad77ba60e6 Only show larger text for up to 3 emojis 2019-11-22 13:50:36 +01:00
JC Brand
1b9ba58aca Rename variable to be more accurate 2019-11-22 13:50:36 +01:00
JC Brand
99f539b3cb MUC: Don't show duplicate subsequent info messages 2019-11-22 13:50:36 +01:00
JC Brand
149fcf5d32 Properly wait when clearing messages 2019-11-22 13:50:36 +01:00
JC Brand
b4dafcc45b Add support for XEP-0424 and XEP-0425
- Add support for switching ephemerality after message creation
- Move more methods from ChatBox and ChatRoom to utils/stanza.js
- Rename 'ephemeral' to 'is_ephemeral' since it's a boolean
2019-11-22 13:50:36 +01:00
JC Brand
4b3d427cff muc: only create view once model has finished initialization 2019-11-22 13:50:36 +01:00
JC Brand
9965a93291 muc: Simplify getVCardForChatroomOccupant method 2019-11-22 13:50:36 +01:00
JC Brand
e915321e33 Group MUC utility methods in muc_utils object
as opposed to having them in the `u` object
2019-11-22 13:50:36 +01:00
JC Brand
8523cae8d0 Move message parsing code out of ChatBox into new stanza-utils plugin 2019-11-22 13:50:36 +01:00
JC Brand
caadb24310 Refactor logging out into its own module
So that we don't need to `_converse` obj in order to log messages
2019-11-22 13:50:36 +01:00
JC Brand
e7661b725e Updates #1760: Private messages no longer received after websocket reconnect 2019-11-18 22:01:02 +01:00
JC Brand
88ea9f8b61 Match a message of only emojis (instead of just a single emoji) 2019-11-18 12:51:18 +01:00
ndoell
b94e5653a9 Add resize functionality to occupants-list in MUC.
This adds the ability to resize the MUC-Member-List in all MUCs. The
MUC-Member-List can be scaled between 20% width of the MUC and 75% of
the MUC.
2019-11-13 19:39:35 +01:00
JC Brand
5ede164e8d Disable custom emojis for now
Fixes #1769
2019-11-09 11:53:53 +01:00
JC Brand
879e165ae5 Refactoring
- Move headless one-on-one chat functionality into converse-chat
- Split converse-headline into converse-headlines and converse-headlines-views
- Add api in `_converse.api.chatboxes` for creating chatboxes
- Add `_converse.api.controlbox.get` method
2019-11-04 15:05:50 +01:00
JC Brand
93d56898b7 Fixes #1772. Wait for roster to be fetched 2019-11-03 19:34:55 +01:00
JC Brand
23797dee21 _converse.api.alert.show is now _converse.api.show
Instead of taking an integer for the `type`, "info", "warn" or "error" should be passed in.
2019-10-31 14:42:44 +01:00
JC Brand
17dfa3d7ba Avoid race-condition that destroys vcards
VCards were being created before `fetch` was completed, so once fetch
was done those VCards were unset from their collection.

Add a new event and promise `VCardsInitialized` that triggers after
successful fetching and wait for it before creating VCards.
2019-10-30 13:02:23 +01:00
JC Brand
1fa203c990 Support for IndexedDB. updates #1105
Depend on latest backbone.browserStorage which has support for IndexedDB
via localforage.

Storage operations are now asynchronous and transactional.

Bugs fixed (mostly by waiting for operations to complete):

* Rooms are now fetched asynchronously, so wait before triggering `show`
  or when closing.
* Make sure chat create/update transactions complete before firing events
* Make sure chats and messages have been fetched before creating new ones.
* When doing a `fetch` with `wait: false` on a collection and then
  creating a model in that collection, then once the read
  operation finishes (after creating the model), the collection is emptied again.
* Patch and wait when saving.
  Otherwise we have previously set attributes overriding later ones.
* Make sure api.roomviews.close returns a promise

Test fixes:

* Chats are now asynchronously returned, so we need to use `await`
* Wait for the storage transaction to complete when creating and updating messages
* Wait for all chatboxes to close
    Otherwise we get sessionStorage inconsistencies due to the async nature of localforage.
* Wait for room views to close in spec/chatroom.js

In the process, remove the `closeAllChatBoxes` override in
converse-controlbox by letting the `close` method decide whether it
should be closed or not.
2019-10-30 13:02:23 +01:00
JC Brand
b6d5077d04 Refactor _converse.XMPPStatus out into headless/converse-status.js
Also move some other methods out of `converse-core` into the plugins
that use them.
2019-10-18 11:13:09 +02:00
JC Brand
aae7e111eb Fix roster caching and versioning issue.
- Always try to first get local cache before requesting the roster.
- Rename `roster_fetched` with `roster_cached`
2019-10-17 16:19:14 +02:00
JC Brand
f7a57f272e Remove show_only_online_users config setting.
Doesn't appear to be very useful. IIRC it was added as a workaround for
slow roster issues.
2019-10-17 13:17:37 +02:00
JC Brand
e6e23a1a82 Add initial support for custom emojis 2019-10-17 12:12:08 +02:00
JC Brand
99805d2510 Make sure the roster is fetched again if stream resumption fails 2019-10-15 14:30:04 +02:00
JC Brand
9d619820f9 core: Don't allow the connection to be passed in.
This was used for tests but is no longer necessary.
2019-10-15 14:30:04 +02:00
JC Brand
be03b30d75 bookmarks: better handling of timeouts
- Inform the user when fetching of bookmarks times out.
- Only set the cached flag if the user doesn't have bookmarks.
2019-10-15 13:09:34 +02:00
JC Brand
487f1b5281 core: use _.get since connection might not be set up yet 2019-10-15 13:09:34 +02:00
JC Brand
f21abc60f5 roster: Only fetch from browser storage if already cached 2019-10-15 13:09:34 +02:00
JC Brand
358187f8b0 bosh: Bugfix, pass in JID 2019-10-14 13:22:34 +02:00
JC Brand
0fa95ccd50 Bugfix. Pass correct arguments to synchronous event handlers 2019-10-13 19:58:00 +02:00
JC Brand
c8b7e8ab99 bookmarks: refactor to use VDOMView instead of OrderedListView 2019-10-13 17:53:57 +02:00
JC Brand
91397125ba roomslist: Refactor to use VDOMView instead of OrderedListView 2019-10-13 16:59:31 +02:00
JC Brand
82bce1e946 Move creation of browserStorage into a separate method
This is in anticipation of the localforage/IndexDB merge
2019-10-11 20:40:31 +02:00
JC Brand
9d77a4ef97 Fixes #129 Add support for XEP-0156.
Only XML is supported for now.
2019-10-11 17:46:13 +02:00
JC Brand
54e9c51a1a Don't rely on getUniqueId of Strophe.Connection
since we can't assume it's always available.
2019-10-11 17:46:13 +02:00
JC Brand
6253dd52a6 core: let logout return a promise and wait for it in tests 2019-10-11 17:46:13 +02:00
JC Brand
5383d65d5a roster: unregisterPresenceHandler must be wrapped in arrow function 2019-10-11 17:46:13 +02:00
JC Brand
b63b080419 chatboxes: wait until messages are fixed before returning new chatbox
Fixes #1691
2019-10-10 14:44:13 +02:00
Christoph Scholz
2d44144b69 prevent message correction for files 2019-10-10 14:19:34 +02:00
JC Brand
8780f7a128 Fix linting errors (no-unused-vars) 2019-10-09 16:27:58 +02:00
JC Brand
f9b09052eb core: Make sure window.converse is defined before assigning to it. 2019-10-08 16:47:30 +02:00
JC Brand
75c11a2006 emoji-views: Specify dependency on muc-views
Otherwise plugins might be loaded out of order and then event handlers
in this module don't get registered.

Also, bump to dev version number
2019-10-08 16:30:23 +02:00
JC Brand
266fe131a9 Release 5.0.4 2019-10-08 14:22:56 +02:00
JC Brand
b70fde159d Fixes #1738. Allow webpack's publicPath to be specified at runtime 2019-10-06 21:52:37 +02:00
JC Brand
5c532e3b92 Build po files and add Vietnemese as available language 2019-10-06 21:52:09 +02:00
JC Brand
fdb24122c0 chatboxes: clear messages when in untrusted mode 2019-10-04 17:47:57 +02:00
Christoph Scholz
1c7c25091f new config option: allow_message_corrections 2019-10-04 15:42:38 +02:00
JC Brand
463caf36a1 bookmarks: silently remove bookmarks when clearing the session 2019-09-26 16:43:26 +02:00
JC Brand
0895abf3e4 chatboxes: Replace lodash methods and only import what's necessary 2019-09-26 15:21:47 +02:00
JC Brand
44e5b4c947 bosh: only advertise support if the module is enabled
updates #1725
2019-09-24 15:42:13 +02:00
Christoph Scholz
bce8dc9113 Fixes #1714
don't notify if only message delivery receipt
2019-09-24 13:27:49 +02:00
Christoph Scholz
cd5dacbe29 Process stanzas from mam one-by-one 2019-09-21 13:26:36 +02:00
JC Brand
51b818f916 smacks: Also check for BOSH to determine support 2019-09-20 12:06:43 +02:00
huang.xinghui
9291dfc918 Update package.json
fix: fixed main file path
2019-09-17 11:33:57 +02:00
JC Brand
e377c9bd6f Fixes #1712 2019-09-16 14:04:28 +02:00
laszlovl
ab9b2d64ab Fix incorrectly detecting every message with a duplicate ID as correction 2019-09-16 13:07:14 +02:00
JC Brand
9d52b16b58 Set new dev version 2019-09-13 16:05:18 +02:00
JC Brand
39896b508b Release 5.0.3 2019-09-13 15:19:00 +02:00
JC Brand
bdf4f3f536 Bump npm and lodash 2019-09-13 13:38:20 +02:00
JC Brand
68e34351ed Reject unencapsulated forwarded messages
since we don't support XEP-0297 on its own
2019-09-13 13:05:21 +02:00
JC Brand
37d052ad9e Verify that Converse is not susceptible to CVE-2015-8688
https://gultsch.de/gajim_roster_push_and_message_interception.html
2019-09-12 19:46:09 +02:00
JC Brand
c6f3da5887 Clean up test 2019-09-12 19:15:13 +02:00
JC Brand
d58380af83 Provide more info in error message 2019-09-12 12:51:20 +02:00
JC Brand
a6b7d0d972 Emit chatBoxFocused and chatBoxBlurred events for emoji picker input 2019-09-12 11:05:27 +02:00
JC Brand
5bf0955193 Release 5.0.2 2019-09-11 17:44:38 +02:00
JC Brand
35e97c2353 Ignore MAM chat messages not sent from yourself 2019-09-11 14:18:21 +02:00
JC Brand
0af9bc8ffc Fixes #1704
Ignore carbon groupchat messages
2019-09-11 14:18:21 +02:00
Licaon_Kter
a69ebcbdf6 Capitalize "groupchat" (#1707)
* Capitalize "groupchat"

* Also locale

* Also muc spec
2019-09-11 14:17:23 +02:00
JC Brand
e305cc35b0 Remove --larger class on a edited message that's no longer just emojis 2019-09-10 16:54:32 +02:00
JC Brand
768ed4a577 Replace lodash methods with built-ins, convert docstrings to JSDoc 2019-09-07 23:14:33 +02:00
JC Brand
cc91f3751e Add listenTo instead of on to avoid memory leaks 2019-09-06 16:04:06 +02:00
JC Brand
d9c1bbf95b updates #1691: Use listenTo
so that we have automatic event deregistration when the model gets removed.
2019-09-06 13:10:37 +02:00
JC Brand
01468fc087 converse-emoji: Sort search results
Also, don't show the categories while searching.
2019-09-05 14:49:06 +02:00
JC Brand
4015eb2fd1 Name anonymous function to fix failing test 2019-09-05 13:12:34 +02:00