Commit Graph

365 Commits

Author SHA1 Message Date
JC Brand
607d798665 Store session per full JID
Otherwise we run into a bug where two tabs with Converse.js share the
same XEP-0198 SM-ID, causing both to go into a reconnection-loop as
the XMPP server switches XEP-0198 sessions between them.

This bug is due to a distinction in how sessionStorage behaves when you
open the existing site in a new tab (e.g. middle-click or
`target="_blank"), as opposed to creating a new tab
and then opening the site in that tab.

In the latter case, the newly created sessionStorage object is empty.
In the former, the contents of sessionStorage of the current page is
copied over to the new page!
2019-06-25 21:40:28 +02:00
JC Brand
681c3a2c12 Corrections bugfix. Don't save new id on message model
otherwise a new cache entry gets created, causing multiple messages to
be restored from cache later on.
2019-06-25 12:06:47 +02:00
JC Brand
1bc3f28e6f Update refreshFeatures
Distinguish between getting an existing entity and
creating a new one.

When creating a new one, ensure that we don't fetch from the cache.

New API method for creating a disco entity.
2019-06-25 11:43:59 +02:00
JC Brand
996a43792e converse-mam depends on converse-rsm 2019-06-20 16:51:50 +02:00
JC Brand
29b6a6724d Need to explicitly fetch messages now when restoring a MUC from cache 2019-06-20 16:36:26 +02:00
JC Brand
40469a9787 MUC: Refresh room features when re-entering a cached room
Only fetch messages after we have the latest room features
Otherwise we run into race conditions where MAM messages are fetched
before we know whether (updated) the room supports MAM or not.
2019-06-20 14:04:46 +02:00
JC Brand
ac007bb527 converse-disco: don't replace a pending promise
I'm not sure how much this is an issue outside of tests, where we might
run into race conditions arising to the fact that we don't always
respond to every IQ stanza
2019-06-20 14:04:46 +02:00
JC Brand
c5309f9210 Add attributes to resolveable promise to detect its resolved state 2019-06-20 14:04:46 +02:00
JC Brand
c32070c9bb Autocomplete fixes
- Fixes #1575. Height not properly set on MUC invitation list
- Add new configuration setting: `muc_mention_autocomplete_min_chars`
- Bugfix. `min_chars` setting for MUC mentions wasn't having an effect
2019-06-19 15:01:30 +02:00
JC Brand
303a8b63af Fixes #1495. Mentions should always include a URI attribute 2019-06-19 09:35:39 +02:00
JC Brand
1dc73c1c31 For chatboxes, use the web storage determined by _converse.trusted 2019-06-18 16:46:55 +02:00
JC Brand
21b0f2464d Clear received field for corrected messages
It gets populated again upon MUC reflection or chat marker
2019-06-17 12:14:31 +02:00
JC Brand
9c66302c4a Bugfix. Error responses weren't being shown for corrections 2019-06-17 12:07:33 +02:00
JC Brand
de3099a9d8 converse-muc: Show <text> content of error presences 2019-06-16 12:14:32 +02:00
JC Brand
83201e7c02 Reconnection fixes.
When reconnecting with a new transport, we call setUserJID
so that a new resource is generated, to avoid multiple
server-side sessions with the same resource.

We also call `_proto._doDisconnect` so that connection event handlers
for the old transport are removed.
2019-06-14 12:00:49 +02:00
JC Brand
9635f53dad converse-smacks: 2 bugfixes.
- Don't ever resume SMACKS stream when using BOSH
- Clear SMACKS session data when using BOSH
2019-06-14 12:00:49 +02:00
JC Brand
946394928b Fixes #1601 Message corrections should get their own origin id 2019-06-13 16:31:02 +02:00
JC Brand
22bdccc775 Bugfix.
https://xmpp.org/extensions/xep-0198.html#resumption

The <resume/> element MUST include a 'previd' attribute whose value
is the SM-ID of the former stream and MUST include an 'h' attribute
that identifies the sequence number of the last handled stanza sent
over the former stream from the server to the client.
2019-06-13 13:54:58 +02:00
JC Brand
f3c4dbc344 Avoid unnecessarily sending out a presence stanza
- Set roster_fetched flag when we get an empty IQ[type="result"] stanza
- Set `restored` flag when resuming in converse-smacks
- Don't trigger change event when fetching xmppstatus values
- Removed two events, since we can just listen to `change` on `_converse.xmppstatus`.
2019-06-13 13:33:01 +02:00
JC Brand
ba9d28b5c2 Two MUC tests
- Test for info message indicating a configuration change
- Test that the MUC reconnects when a `not-acceptable` error is returned
2019-06-12 18:39:24 +02:00
JC Brand
ca4b509d87 Log MUC connection status 2019-06-12 10:55:01 +02:00
JC Brand
5362156731 While connecting, treat "modify" error as a disconnection event 2019-06-12 10:15:55 +02:00
JC Brand
9d3dfa831a Fixes #1599 2019-06-12 06:40:53 +02:00
JC Brand
e1ca02d94a converse-disco: don't call onInfo on undefined 2019-06-12 06:27:07 +02:00
JC Brand
bbe2a62295 converse-muc: Create info and error messages on the model
instead of on the view.
2019-06-12 06:27:07 +02:00
JC Brand
970ba96ce1 Bugfix. Only create VCards for chat and groupchat messages
Other types of messages such as `error` don't necessarily have a JID
tied to them.
2019-06-11 14:05:30 +02:00
JC Brand
a0f0240b92 Don't set nick before confirmation that it was successful 2019-06-11 14:05:30 +02:00
JC Brand
d385452a7d Use _converse.getDefaultMUCNickname 2019-06-11 14:05:30 +02:00
JC Brand
599f7596f6 Show policy violation errors to the user and make them ephemeral
Also, remove ephemeral messages after 10 seconds, not 20
2019-06-11 14:05:07 +02:00
JC Brand
dc0085bff3 All received MUC messages are "received" by definition 2019-06-06 16:17:51 +02:00
JC Brand
690052e1c2 Call setUserJID when we get JID from credentials_url 2019-06-06 13:41:52 +02:00
JC Brand
789b47ddb3 Bugfix. Don't create view for chat which fails validation
Use-case is when an invalid MUC gets opened in singleton mode.
Without this fix a new chat with spinner appears, even though it
shouldn't.
2019-06-06 08:34:56 +02:00
JC Brand
a656750459 Only fetch presences when we're resuming an existing session.
updates #555
2019-06-05 11:47:23 +02:00
JC Brand
a7184fab41 Bugfix. Need to wait for setUserJID 2019-06-05 11:38:14 +02:00
JC Brand
38a232fd45 Move BOSH code into a plugin
- Remove the `keepalive` configuration setting. It is now always implicitly `true`.
- Remove the `expose_rid_and_sid` configuration setting.
- A `prebind_url` is now mandatory when setting `authentication` to `prebind`.
- It's no longer possible to pass in `rid` and `sid` values to `converse.initialize.
2019-06-05 11:35:48 +02:00
JC Brand
01fce55733 Add prettierx and tentatively use it for some formatting
I'm using prettierx, which is a fork of prettier so that we can have
spaces before the brackets in a function declaration.

I don't like how restrictive prettier is concerning its configuration
and formatting.

- it messes up some indentation in specs/
- it removes a second newline when I specifically want to have two
- it doesn't allow spaces before brackets in function declarations (hence prettierx)
- it adds spaces for function parameters with default values

None of this is configurable.

So auto-formatting is not turned on by default, but it might be a useful
tool in some cases.

Fixes an issue where indentation was off in converse-core.js, causing
vim-sleuth to wrongly indent by three spaces only.
2019-06-05 10:25:31 +02:00
JC Brand
085a4c6535 Small config fixes
- fix import path
- remove unnecessary lines in webpack config
- remove unused file
2019-06-04 20:35:09 +02:00
JC Brand
51f2ab9100 Fixes #1196. Use alternative connection method upon connfail 2019-06-04 15:11:32 +02:00
JC Brand
297f3d9efb The list of core plugins doesn't have to be an attribute of _converse 2019-06-04 14:27:25 +02:00
JC Brand
b128286410 Don't disconnect MUC on unload when using SMACKS
updates #1111
2019-06-04 11:12:22 +02:00
JC Brand
1d9bbb8ddd Message display improvements
* Checkmark and edit modal button are now on the right
* Instead of showing checkmarks for MUC messages,
  we now show them as light grey before MUC reflection
* Simplify message markup by requiring less `if` statements
2019-06-04 11:12:22 +02:00
JC Brand
f2ac9ef4d7 converse-muc: Support for XEP-0410 to check whether we're joined 2019-06-03 11:41:34 +02:00
JC Brand
68d4a71c75 Fix _converse.api.user.login to handle auto_login case
Also, set the resource in `setUserJID`
2019-06-03 11:40:26 +02:00
JC Brand
3c6a17f85c Update to latest Strophe commit with explicit bind support 2019-06-03 10:02:57 +02:00
JC Brand
699fe0df63 Initial support for the CredentialsContainer web API 2019-06-03 09:43:24 +02:00
JC Brand
737e27c726 Use shakespearean character names in tests 2019-06-03 09:43:24 +02:00
JC Brand
5738b3748a Use getDisplayName for roster contacts 2019-06-03 09:43:24 +02:00
JC Brand
1fb5378524 Throw error on parser error in toStanza 2019-06-03 09:43:24 +02:00
JC Brand
f30d415f76 Refactor reconnection 2019-06-03 09:43:24 +02:00
JC Brand
55cffab594 Destroy session objects in clearSession, not in tearDown 2019-06-03 09:43:24 +02:00
JC Brand
dc58e6d47f Make teardown a function 2019-06-03 09:43:24 +02:00
JC Brand
7b11d85503 Add support for XEP-0198 Stream Management
- New plugin `converse-smacks`
- New config option `enable_smacks`
- Rename session cache id from `converse.bosh-session` to `converse.session`
- Refactor logout and login as consistently used api methods
- Refactor session cache to store per JID

Fixes #316
2019-06-03 09:43:12 +02:00
JC Brand
7c7002ebf9 Add _converse.default_connection_options
So that we can specify defaults
2019-06-03 09:41:29 +02:00
JC Brand
24956d8dca Execute manual resource binding if necessary 2019-06-03 09:41:29 +02:00
JC Brand
0688907e0d Allow events to be synchronous
When a synchronous event is fired, Converse will wait for all
promises returned by the event's handlers to finish before continuing.
2019-06-03 09:41:29 +02:00
JC Brand
267fb38e0c Remove the forward_messages config option 2019-05-31 16:07:51 +02:00
JC Brand
aece956281 Refactor strophe usage
- Upgrade to latest commit in Strophe
- Import individual Strophe dependencies
- Replace strophe plugins with code in Converse
2019-05-29 18:27:34 +02:00
JC Brand
7a18f59f8f Simplify rendering of trimmed chats
Also fix issue where trimmed headline chatboxes don't show the proper
color
2019-05-29 13:28:45 +02:00
JC Brand
da713f3162 Improve chatroom name rendering
- Take locked_muc_domain into consideration in chatroom display name
- Use getDisplayName when rendering the heading name
- Give preference to bookmark name if it exists
2019-05-29 13:27:41 +02:00
JC Brand
2834e8d678 Bugfix. Single emoji messages don't display larger when restored from cache 2019-05-28 15:38:55 +02:00
JC Brand
7511d8c35e Always clear messages and occupants cache before (re)entering a room 2019-05-28 14:30:55 +02:00
JC Brand
e053b97043 Set room `connection_status' to DISCONNECTED...
when receiving an `unavailable` presence for ourselves.
2019-05-28 14:30:55 +02:00
JC Brand
be0274f1f0 Fixes #1586. Not possible to kick someone with space in nick
Refactored moderation by moving certain methods to the model and
consolidating setting of roles and affiliations into new methods.
2019-05-27 12:27:12 +02:00
JC Brand
5e6c2b9982 Move role modifying method to the model
and also first check whether we have an occupant with that nickname.

Since roles are session based, it doesn't make any sense to try to
modify the role for a user not in the room.
2019-05-27 12:27:03 +02:00
JC Brand
22e3c49660 Terminology fix 2019-05-26 11:20:31 +02:00
JC Brand
f387c947f5 Allow the full app to be embedded.
- new config option `singleton`.
- new plugin `converse-uniview`
- removed `converse-embedded`.
- various CSS changes, to properly render an embedded full app
- don't re-open cached and non-autojoined chats in singleton mode

The goal here is to extend the `embedded` `view_mode` so that the full app can
also be embedded, not just a single MUC or private chat.

To do this, we'll need to differentiate between multi and singleton chat apps.

* A singleton chat app contains only a single chat.
* A multi-chat app can contain zero or more chats

So we introduce a new config option, `singleton`, which when used with
`view_mode` set to `embedded` will determine whether a single chat or the full
app is embedded.

Similarly, in `overlayed`, `fullscreen` and `mobile` view modes, `singleton`
set to true will allow only one chat within the parameters of that view mode.

We're appropriating the word `singleton` and introducing the concepts of
`uniview` and `multiview` (see a785ca8) to cover what was
previously meant with `singleton`.

updates #1297
2019-05-24 20:39:19 +02:00
JC Brand
1ef29bee4e Use composition instead of overrides 2019-05-24 16:02:07 +02:00
JC Brand
f0a680e492 Remove animate config settings.
Also update tests
2019-05-23 22:02:08 +02:00
JC Brand
04af3eb029 Always try to reserve nickname when entering room
Allows for simpler code, especially making `getReservedNick` easier to override
2019-05-23 16:04:55 +02:00
JC Brand
b876500865 Update to latest backbone.overview 2019-05-23 14:44:10 +02:00
JC Brand
7032ded53f cleanup 2019-05-22 19:45:00 +02:00
JC Brand
a1c33d2140 No need to explicitly call refreshFeatures
`initializeDisco` already gets called upon reconnection which
accomplishes this.
2019-05-22 19:30:22 +02:00
JC Brand
429c320a79 Also clear MUC occupants upon reconnection 2019-05-22 19:27:53 +02:00
JC Brand
7ab59ad63e Refactor MAM and clear private chats upon reconnection
- Add `onReconnected` method for chatboxes to clear messages
- Move MAM models to headless build.
- New event `onChatReconnected`
2019-05-22 14:10:19 +02:00
JC Brand
271c79eae8 Refactor message corrections
- Save date for older message versions and display it in the modal
- Properly handle the correction being received *before* the corrected message
2019-05-22 13:26:46 +02:00
JC Brand
53520317fc Move locked_muc_domain and muc_domain to model 2019-05-21 13:05:58 +02:00
JC Brand
1269d53e02 Move enterRoom method to the model 2019-05-21 12:04:55 +02:00
JC Brand
4c924a66df Split bookmarks plugin into headless and views
Fixes #1577
2019-05-21 11:35:00 +02:00
JC Brand
0e49ebf695 Rename method to clarify that it's not simply an accessor 2019-05-21 11:33:01 +02:00
JC Brand
d1d81bf933 Bugfix. Remove condition before fetching members 2019-05-21 11:33:01 +02:00
JC Brand
bb0c0fcd81 Remove message views when messages get reset 2019-05-21 09:56:27 +02:00
JC Brand
b4b7fedf0f Bugfix. Add id to outgoing MUC messages 2019-05-20 17:16:16 +02:00
JC Brand
5f04176929 Clear messages when converse reconnects 2019-05-20 17:10:34 +02:00
JC Brand
886ff1bd19 Don't debounce reconnect on leading edge
Otherwise we can get into a situation where Converse stops trying to
reconnect.
2019-05-20 15:16:36 +02:00
JC Brand
7e515dd4b1 Move all MUC joining logic to the model 2019-05-20 10:06:37 +02:00
JC Brand
39363d495f Fetch messages in MUC model 2019-05-20 09:25:11 +02:00
JC Brand
46fef28601 Clear messages when closing a chat 2019-05-19 22:11:37 +02:00
JC Brand
3085c5d408 Catch errors when destroy is called for already removed message 2019-05-19 21:43:03 +02:00
JC Brand
84bde6e766 Move some close logic to the model 2019-05-18 07:09:53 +02:00
JC Brand
0426898c23 Store chat messages in sessionStorage
so that they're cleared when the last tab closes
2019-05-18 06:57:48 +02:00
JC Brand
f7b19053ec Use origin_id as id for outgoing messages as well 2019-05-18 05:32:04 +02:00
JC Brand
a0f1a5cfaf Fetch chat messages in the model, not the view 2019-05-17 14:45:37 +02:00
Christoph Scholz
038359c74f fix foreach in fileupload 2019-05-16 15:22:35 +02:00
JC Brand
9a94e5b47e Bugfixes in fetching of occupants 2019-05-15 14:30:43 +02:00
JC Brand
385a82f432 Bump strophe.js to 1.3.3 2019-05-15 09:50:17 +02:00
JC Brand
1bc425e596 Fetch cached occupants in the model instead of the view 2019-05-15 09:34:52 +02:00
supun19
dd0821076d Groupchat auto-configuration now supports list-multi fields 2019-05-14 15:28:06 +02:00
JC Brand
6193a9dc80 Replace lodash methods with native ones and remove lodash.fp 2019-05-14 12:41:47 +02:00
JC Brand
d98b33de0a Trigger will-connect event inside reconnect method.
Also add docstrings.
2019-05-14 10:31:41 +02:00
JC Brand
4f705369bd Replace _.each and _.map with native methods 2019-05-13 20:16:39 +02:00