Commit Graph

345 Commits

Author SHA1 Message Date
JC Brand
725a382e3b Refactor initialization and defaults for chat boxes
- Let box_id start with char for valid HTML.
- No need to use SHA1 for box id
- No need for the user_id attribute.
- Set nickname when we set the roster contact.

Also...

- _converse.api.contacts.get is now async
- _converse.api.chats.create is now async
2019-04-18 16:14:51 +02:00
JC Brand
ee78ec1333 Add force parameter to _converse.chats.open
This changes the API method's current behavior by not automatically
maximizing (in `overlayed` view mode) or bringing a background chat into
foreground (in `fullscreen` view mode). Instead `force` needs to be set
to `true` for that to happen.
2019-04-16 16:42:15 +02:00
JC Brand
1dd2c4ce7b Reconnect if we can't send a message due to dropped connection 2019-04-16 13:01:47 +02:00
JC Brand
f84c201437 Hide the textarea when a user is muted in a groupchat 2019-04-11 01:40:16 +02:00
JC Brand
a75c118a2c Prioritize roster nickname as message and chatbox display name
Set reference to roster contact on the message and chatbox object and
listen for changes to the nickname.

Currently, because chat boxes are fetched and initialized before the
roster, messages and chats are repainted with the correct display name
only later, causing a "flash" effect.

Ideally we would only initialize the chat boxes after the roster
contacts have been fetched, but this is currently not easily possible
because we need the control box to render before everything else.
2019-04-09 17:20:41 +02:00
JC Brand
a45bd8d14b Convert older docstrings to JSDoc syntax 2019-03-30 12:54:56 +01:00
JC Brand
f897703565 Rename emit to trigger for consistency with Backbone.Events 2019-03-29 21:56:56 +01:00
JC Brand
f6335dcabe Document fired events with JSDoc 2019-03-29 21:04:33 +01:00
JC Brand
d41a7a14c3 Use API to emit and listen to events 2019-03-29 14:16:07 +01:00
JC Brand
27557d6a04 Document _converse.ChatBox.prototype.sendMessage as an API method
Until now, we've only been explicitly documenting the `_converse.api`
namespace and only considered the methods under it as forming the API
contract (which determines how we do semver releases).

It appears as if we've reached a point where trying to keep everything
under the `_converse.api` namespace no longer makes sense. Certain
methods are applicable to particular models and trying to shoehorn them
into the `_converse.api` namespace seems clunky and non-intuitive.

I've therefore decided to slightly refactor `sendMessage` to let it take
two simple parameters and to document it with JSDoc so that it's
presented as an API method, albeit only available on a chat model.

updates #1496
updates #1504
2019-03-21 21:03:02 +01:00
JC Brand
be6a5d9c37 Reuse XEP-359 unique and stable stanza ids for Message id.
This helps us to avoid duplicates by relying on the fact that Backbone
models have unique ids.
2019-03-07 08:56:17 +01:00
Emmanuel Gil Peyrot
b7ae9f212c Replace http: with https: in conversejs.org links 2019-03-04 17:47:45 +01:00
JC Brand
c026dc8a86 New copyright year 2019-02-18 20:23:18 +01:00
JC Brand
d08f738656 Bugfix: Restore textarea size after sending message 2019-02-14 13:21:26 +01:00
JC Brand
1ca7d34c25 Ignore (and destroy) archived/delayed messages with no body to show 2019-01-31 16:11:17 +01:00
JC Brand
3cbc99a3f2 Roster fixes related to reconnecting
Avoid `An 'url' property must be specified` error by properly clearing
presence data upon teardown and then resetting the browserStorage upon
reconnection.

Store contact resources in a Backbone collection
2019-01-28 13:30:47 +01:00
JC Brand
7753177ca9 Remove unnecessary aliases from webpack 2019-01-25 07:32:50 +01:00
JC Brand
79990f7e01 Don't unnecessarily set height on textarea 2019-01-11 18:38:09 +01:00
JC Brand
d92a742877 Fixes #1390 2019-01-04 05:43:59 +01:00
JC Brand
d051085626 Only clear textarea once message was sent
This now requires `sendMessage` to return a boolean to indicate success.
Disable the textarea while message is being sent.
2018-12-21 05:58:22 +01:00
JC Brand
dd3133e7de Avoid RID out of range errors in Prosody
by not flushing stanzas when sending out an <inactive> CSI.

When reloading the page, the stanzas are resent (because we never had
time to receive acks) which causes problems on Prosody (and likely also
causes the Ejabberd "other-request" errors).
2018-12-03 21:33:34 +01:00
JC Brand
01c3d35db2 Remove unnecessary webpack aliases 2018-11-15 11:29:28 +01:00
JC Brand
c494f4267a Use constant 2018-11-12 20:52:28 +01:00
Emmanuel Gil Peyrot
9a12afc702 Change a docstring into a comment. 2018-11-03 12:05:23 +01:00
Emmanuel Gil Peyrot
0d4603d80d Upload files on drag-and-drop.
Fixes #1188.
2018-11-03 00:55:18 +01:00
JC Brand
2bcac13683 Catch, log and report errors related to vcard update 2018-10-25 23:08:19 +02:00
JC Brand
e3bce02975 More usage of async/await 2018-10-25 23:08:19 +02:00
JC Brand
55fce912df
Merge branch 'master' into async-await 2018-10-25 18:36:04 +02:00
JC Brand
6ebf6f6ecc Fix failing test by making sure notifications are cleared 2018-10-25 08:21:38 +02:00
JC Brand
53b1239964 Avoid inserting invalid dates and/or empty divs 2018-10-24 22:42:46 +02:00
Emmanuel Gil Peyrot
35b7dbe389 Convert a few functions to async/await. 2018-10-24 21:23:32 +02:00
JC Brand
6904f9a897 Use es2015 modules instead of UMD 2018-10-23 12:25:58 +02:00
cmrd Senya
8ba8eb02fa Update main converse.js package to use @converse/headless
* Update moved dependencies references to @converse/headless
* Remove unused webpack resolve aliases
2018-10-22 12:44:38 +02:00
JC Brand
dfcc1d97a1 Make sure encrypted messages aren't falsely matched as CSNs 2018-10-18 20:33:40 +02:00
JC Brand
ceb0b82245 Two changes. See below
- No need for the `edited` event.
- Also, don't add load animation for MAM corrections
2018-10-16 21:58:36 +02:00
JC Brand
a8ef1d2904 Fixes #1058 Send inactive CSN when user switches tab 2018-10-16 13:30:29 +02:00
JC Brand
e181aaf99b Make the message view's render method async
So that we first render dynamic content (e.g. images) before inserting
it into the chat.

Also, add the `show_images_inline` setting (which is the cause of this
whole change).

Updated tests to handle this new change and start using async/await
instead of promise callbacks.
2018-10-15 22:19:04 +02:00
JC Brand
7b9c97dfd3 Also squash leave/join messages
And fix an HTML rendering bug for info messages and nicks that contain spaces
2018-10-11 19:04:06 +02:00
JC Brand
682bace83b Don't show new messages indicator for CSN messages 2018-09-19 13:27:03 +02:00
JC Brand
094a8a578a Fixes #1201 Emoji picker appears when pressing enter 2018-09-18 16:26:10 +02:00
JC Brand
8cc88d9b17 Fixes #1152 CSN in MUC triggers rate limiting.
- Avoid registering `sendChatState` twice as handler.
- Avoid sending out a CSN right after sending out a message
2018-09-07 14:00:57 +02:00
JC Brand
023249f62e Render profile avatar as canvas.
We now have uniform avatar rendering for the profile, messages and
chatboxes.

By rendering as canvas, we can avoid stretching the image.

In the process I also moved the ChatBoxViews collection into its own
plugin `converse-chatboxviews` and placed the AvatarAware views there.

fixes #1157
2018-09-06 15:33:13 +02:00
JC Brand
adee252b28 Close emoji dropdown on enter and prevent default 2018-09-03 14:36:09 +02:00
JC Brand
23b65f5fc5 Lazily load emoji images 2018-09-03 14:20:14 +02:00
JC Brand
1d38d8af03 Use twemoji for rendering emojis 2018-09-03 13:24:37 +02:00
JC Brand
866f2737da More JSDoc docstrings for API methods 2018-09-02 23:43:39 +02:00
JC Brand
33c2d4614f Remove unused method 2018-08-29 10:33:43 +02:00
JC Brand
f72ace506f Replace the onChatBoxAdded override with event handlers 2018-08-28 15:08:38 +02:00
JC Brand
1dc1c1f98a Properly generate and render fingerprints 2018-08-27 21:02:31 +02:00
JC Brand
d784e4a73a Show an icon to indicate that a message is encrypted
updates #497
2018-08-24 16:26:54 +02:00