Commit Graph

551 Commits

Author SHA1 Message Date
JC Brand
0fe4031a1b Close all chat boxes when disconnected (with no reconnection attempt) 2016-10-18 11:34:46 +02:00
JC Brand
2d6d4df1f1 Use requestAnimationFrame instead of setTimeout
For better performance.
2016-10-17 13:16:41 +02:00
JC Brand
4b28f3f803 Bookmarks fixes.
- Remove bookmark from list when removed from collection
- Only render list after all bookmarks have been fetched
- Properly remove bookmarks from sessionStorage
2016-10-17 11:20:20 +02:00
JC Brand
b832285d93 Markup fix to allow bigger chatview avatar 2016-10-15 00:02:22 +02:00
JC Brand
862af642ff Move avatar markup to a template and make size configurable 2016-10-14 23:42:54 +02:00
JC Brand
2712bcb7cc Use strophejs-plugins from NPM 2016-10-13 21:55:39 +00:00
JC Brand
f60ee4d640 Refactor rooms to have separate handlers for presence and message stanzas 2016-10-13 18:22:37 +02:00
JC Brand
43ae702c7a Only fetch bookmarks once chatboxes can be handled. 2016-10-13 18:08:59 +02:00
JC Brand
5a3917925e Add a new configuration setting: connection_options
Allows you to pass in options for the `Strophe.Connection` constructor.
2016-10-12 14:16:34 +02:00
JC Brand
8d2788c543 Handle case where there aren't bookmarks 2016-10-06 14:21:08 +02:00
JC Brand
fc48e02937 More lazily render the bookmarks list
Could still be improved.
2016-10-06 13:21:59 +02:00
JC Brand
0020be34d7 Show a list of current bookmarks in the "Rooms" panel 2016-10-06 12:05:25 +02:00
JC Brand
e39999f3ec Check bookmarks for nicks when joining rooms 2016-10-05 23:15:42 +02:00
JC Brand
6972066076 Bookmarked rooms will now be automatically opened
If configured for it.
2016-10-05 23:15:42 +02:00
JC Brand
e80f001b35 Allow bookmarks to be removed from rooms
Refactored the code a bit in the process.
2016-10-05 23:15:42 +02:00
JC Brand
7ca7943706 Indicate whether a chatroom has been bookmarked. 2016-10-05 23:15:42 +02:00
JC Brand
3363041625 _super has been renamed to __super__. 2016-10-05 23:15:42 +02:00
JC Brand
3e77deee26 Bugfix in format of IQ stanza to save bookmarks. 2016-10-05 23:15:42 +02:00
JC Brand
052dd19252 Initial work on adding chatroom bookmarks. 2016-10-05 23:15:42 +02:00
Mathias Ertl
1ba68dc8b2 Csp compat (#695)
* Remove some inline CSS style to improve CSP compatibility

* update changelog
2016-10-03 19:45:06 +02:00
JC Brand
fa4e51f3ba Handle undefined settings being passed in. 2016-09-30 10:42:15 +02:00
JC Brand
90d1071df0 Load templates in the respective plugins 2016-09-23 12:35:01 +02:00
JC Brand
ab76f1da44 Let core populated the roster, and send the initial presence
This allows for cleaner separation between core and rosterview, making it
easier to remove that plugin for more stripped down deployments.
2016-09-21 15:06:48 +02:00
JC Brand
ac2c5f3e4e Allow the context to be passed in when registering event listeners
Similar to how backbone.js does it.
2016-09-21 13:15:45 +02:00
JC Brand
05a577059b Use converse instead of this, to be more explicit. 2016-09-21 11:48:53 +02:00
JC Brand
d8d1c283a7 Let the RosterView render and populate itself
instead of having the ControlBoxView do it. This provides for cleaner
separation between the two plugins.
2016-09-21 11:48:43 +02:00
JC Brand
7030495275 Refactor the rosterview.fetch method
So that we can also fetch the roster also without the controlbox and rosterview.
2016-09-20 17:38:01 +02:00
JC Brand
713922a9e1 Update to Strophe 1.2.8 and add support for SASL-EXTERNAL auth 2016-09-16 13:06:52 +02:00
JC Brand
600f98afcb Attempt to mitigate against performance degrading attacks. 2016-09-12 13:13:57 +02:00
JC Brand
89e5bd7c54 Update to pluggable.js 0.0.2 2016-08-31 10:39:11 +00:00
JC Brand
66c7c41888 Emit 'roster' event after updating contacts 2016-08-31 09:59:54 +00:00
JC Brand
3c9b5bd7a0 More work on session management.
When it's not possible to reconnect due to password no longer being cached,
render the login form.

Fixed a bug whereby after one failed reconnection event, reconnection becomes
impossible (due to 'connection' state of the controlbox).
2016-08-23 18:14:09 +00:00
JC Brand
f5b182c365 Set connected back to true after reconnect. 2016-08-23 13:25:34 +00:00
JC Brand
ba67f37473 Only show desktop notifications for error/warn feedback messages 2016-08-23 11:35:16 +00:00
JC Brand
7a428f4dc8 Configure path for almond.js 2016-08-23 09:35:34 +00:00
JC Brand
c65eee9ed3 Use almond.js via npm (instead of bower) 2016-08-23 09:16:12 +00:00
JC Brand
4a2048baae Found a better way to ensure roster is fetched after reconnecting. 2016-08-23 08:53:37 +00:00
JC Brand
a2ba3ccd4c Fixed chat state value, should be chat not chatty. 2016-08-23 08:43:20 +00:00
JC Brand
c6d37b57e7 Ability to specify both subject and message for feedback messages
This allows for better desktop notification messages.
Also improved the wording for some of the feedback messages.
2016-08-23 08:00:41 +00:00
JC Brand
814845e879 Provide a nicer notification when reconnecting
after a dropped connection.
2016-08-21 11:17:06 +00:00
JC Brand
b8aaf751d2 Changes concerning caching of data in the browser.
- Add new configuration setting messages_storage
- Hardcode the storage for roster contacts and chatroom occupants to `sessionStorage`.
2016-08-21 10:55:45 +00:00
JC Brand
95a0b91afa Update 'rooms' api to allow user to pass in room attributes. 2016-08-19 17:16:36 +02:00
JC Brand
1ee7d06a08 Further document the auto_reconnect option
and drop the reconnection timeout to 3 seconds (from 5).
2016-08-19 14:11:37 +00:00
JC Brand
59143c1c72 More work on auto-reconnecting and on maintaining sessions.
- Added the ability to reconnect to more disconnection causes.
- Make sure the roster is fetched again when reconnecting.
2016-08-19 12:16:55 +00:00
JC Brand
31f0e069ab Decided to use 30secs instead of 20. 2016-08-18 10:19:43 +00:00
JC Brand
4d28ae3c11 Tweak timeouts regarding status notifications.
Send a <paused/> notification after 10 seconds, instead of 20.
Auto-remove a typing notification in the chat box after 20 secs instead of 10.

This is to avoid situations where the status notification gets
auto-removed while the typer keeps on typing without long enough breaks in
between for <pause/> states, thereby causing the recipient to not be aware that
they're still typing.
2016-08-18 09:28:48 +00:00
JC Brand
fdb0425722 Make sure to scroll down after revealing the chat room messages. 2016-08-18 09:08:12 +00:00
JC Brand
6ac4f2601d Fixes #677 Chatbox does not open after close
Problem was a race condition between hide and show methods.
Solution was to not hide the chat box during the initialize method.
2016-08-12 20:38:39 +00:00
JC Brand
4402798dcd Don't add resources from message stanzas. Fixes #632
For each user we keep a list of currently online resources. These resources
were taken from both presence and message stanzas.

Receiving a message doesn't however indicate that the user is online,
especially in the case of archived messages.

This also abused the semantics of messages, which are meant to indicate
user presence.
2016-08-12 19:45:47 +00:00
JC Brand
1f805fa1e2 Fixes surrounding chat state notifications in MUC.
- Send chat state notifications with type groupchat for MUC.
- Don't show own chat state notifications if received from the server.
2016-08-12 17:00:15 +02:00
JC Brand
fe46f2ee77 Chat state notifications are now also sent out from chat rooms. 2016-08-12 12:52:33 +00:00
JC Brand
9d28145724 Bugfix. For reserved rooms, only render config form when they're new. 2016-08-12 10:39:57 +00:00
JC Brand
66d80cc4db New configuration setting muc_instant_rooms.
This option is by default set to `true` which entails no changes in behavior
compared to previous versions of converse.js.

If set to `false`, then rooms first need to be configured before they can be
joined by other users (so-called "reserved" rooms).

More info on "instant" and "reserved" rooms here:
http://xmpp.org/extensions/xep-0045.html#createroom
2016-08-11 16:05:07 +00:00
JC Brand
cd46e96783 Converse.js's plugin architecture has been moved to a separate repo
See https://github.com/jcbrand/pluggable.js
2016-08-11 14:05:25 +00:00
JC Brand
34eb8cdfc4 Add getDefaultNickname method
so that plugins can have a different mechanism for determining the default
nick.
2016-08-11 12:19:43 +00:00
JC Brand
462a43b891 Add new config option muc_nickname_from_jid
which if set to `true` will let converse.js automatically take the node part of
a user's JID as their nickname when entering a room.

If there is a nickname clash, then the nickname will be disambiguated by adding
integers to it.

For example, john will become john-1, then john-2 and so forth.
2016-08-11 12:02:35 +00:00
JC Brand
561c138edd Bugfix. Allow multiple MAM queries to be made simultaneously. 2016-07-28 18:01:37 +02:00
JC Brand
e28aba5a59 Fixes #645. When accepting a contact request...
the contact didn't appear under the pending contacts list.
2016-07-28 10:35:43 +00:00
JC Brand
a1e24c95c9 Add nickname to chat message when clicking on room occupant.
Allows you to easily mention someone in your message.
2016-07-26 09:31:23 +00:00
JC Brand
0f3526c570 Bugfix. Still render server input field, just make it hidden. 2016-07-26 08:30:26 +00:00
JC Brand
e109c54cf4 Avoid having a separate configuration in demo folder 2016-07-26 08:22:31 +00:00
JC Brand
8a42e241b7 We no longer need to force the user to provide a JID
when calling `converse.rooms.open`.
2016-07-26 07:27:28 +00:00
JC Brand
172ce7e0ce Remove the members-list work and keep the nickname form stuff
It's not stable yet and XMPP server support is very patchy.
However, the nickname form work can be merged into master.
2016-07-26 07:14:22 +00:00
JC Brand
0d105b8a6e make sure room nick is remembered across page loads. 2016-07-26 07:12:56 +00:00
JC Brand
be47ceaab5 In case of a nickname conflict, enable the user to choose a new one 2016-07-26 07:12:56 +00:00
JC Brand
f56b85cff7 Check whether the user has a reserved nickname
when they enter a chat room. If they have, we'll use that, otherwise we render
a form where they can specify their nick.

Some chat room tests now fail and still need to be fixed.
2016-07-26 07:12:56 +00:00
JC Brand
cd75b2efab Let the user choose their nick after opening a chat room
This change is with an eye on supporting reserved nicknames, in which case the
user who has a reserved nickname won't have to choose a nick upon joining a
room.
2016-07-26 07:12:56 +00:00
JC Brand
5ffebda8c2 Fix failing tests 2016-07-26 07:12:56 +00:00
JC Brand
c1be16aaab Bugfix. Store and find occupant views by id, not jid
because we don't always have a jid...
2016-07-26 07:12:56 +00:00
JC Brand
93a8dfc024 Indicate whether a room occupant is online or not. 2016-07-26 07:12:56 +00:00
JC Brand
09802cfbde Add invitees to the member-list of the room. 2016-07-26 07:12:56 +00:00
JC Brand
60f433d12e Initial work on managing a room's member's list. 2016-07-26 07:12:56 +00:00
JC Brand
88d2142501 Minor improvements around anonymous login.
You can now provide the JID of the server either via `converse.initialize` or
via `converse.user.login`.
2016-07-24 10:54:57 +02:00
JC Brand
0c393cf286 Move some utility methods to utils.js 2016-07-18 11:41:31 +00:00
JC Brand
01e10a9b24 Bugfix. Don't call Jed's translate method
before converse.initialize has been called. Otherwise we won't get
translations.

Updates #669
2016-07-18 11:34:31 +00:00
JC Brand
71381e2f22 Show requesting contacts when filtering by chat state.
Also add an initial test case for filtering by chat state.
2016-07-18 08:42:07 +00:00
JC Brand
7de76924b4 Create the minimized_chats obj during _initialization
and don't remove during `_tearDown`.

Fixes bug in `trimChats` when logging in again and `converse.minimized_chats`
is undefined.
2016-07-05 06:21:25 +00:00
JC Brand
5ed8dfbe0a Get chat box views by id
Fixes bug when fetching controlbox, which doesn't have a jid
2016-07-05 07:43:34 +02:00
JC Brand
95d7c306d4 Add more logo sizes, resize and pad.
Use the 128x128 icon for Desktop notifications
2016-07-02 13:40:51 +02:00
JC Brand
d6ef4fc5ca Add method hook for adding more attrs to send to the message template 2016-07-01 14:27:26 +02:00
JC Brand
1666a45c6b Handle case where this of overridden method is not the pluggable
due for example to it being called by an event handler.
2016-06-30 14:15:05 +02:00
JC Brand
01f576e505 Return all rooms or private chat when caling get without arguments 2016-06-24 10:54:39 +02:00
JC Brand
be122af3ed Add tests for rendering of error messages. 2016-06-23 08:56:15 +02:00
JC Brand
e06a34a905 Some initial work on show messages with type "error" 2016-06-22 18:47:07 +02:00
JC Brand
9e8674ef55 Rename ChatBoxView.insertIntoPage to ChatBoxView.insertIntoDOM
to ensure naming consistency, we have the same method on `ChatRoomView`.
2016-06-22 15:54:22 +02:00
JC Brand
081d377881 Move code from plugins to core.
Move init of RosterGroups collection and presenceHandler registration out of
the controlbox and rosterview plugins and into core, since this code is
generally useful (indeed necessary) even without those plugins.
2016-06-22 10:25:01 +00:00
JC Brand
9cfec0ba8c Show requesting contacts at the top of the roster view. 2016-06-21 17:48:18 +00:00
JC Brand
7f753040de Move roster-related models/collections to core 2016-06-21 17:36:40 +00:00
JC Brand
b90ad3aa6e Don't check visibility before hiding.
In some cases the element is not visible,but we want to set 'display: None'
regardless, for example in cases where you only want one single chat of
multiple to be visible at any one time, while hiding it behind a sidebar.
2016-06-17 17:43:09 +02:00
JC Brand
d2933b896e Ignore messages without a body 2016-06-17 09:33:09 +00:00
JC Brand
705c043852 Fixes concerning tab visibility 2016-06-17 09:30:47 +00:00
JC Brand
10ca2900d4 Add a "create" parameter to rooms.get
to indicate whether the room should be created if not found.
2016-06-17 09:30:31 +00:00
JC Brand
95c5f9d420 Better support for checking whether the page is visible or not. 2016-06-16 16:14:22 +00:00
JC Brand
ee6d7ebd7a Bugfix. Need to strip the resource to get the room jid 2016-06-16 17:24:58 +02:00
JC Brand
e12c165454 Add new event pluginsInitialized and use it in converse-notifications
By listening for this event before registering event handlers, other plugins
can first get their overrides of those handlers applied.
2016-06-16 17:21:49 +02:00
JC Brand
73bf2f88ea Bugfix. The rooms.get method didn't work properly
because the method it was delegating to was applicable to private chats only.
2016-06-16 17:20:11 +02:00
JC Brand
70f1570984 Bugfix. If controlbox is not there, undefined is returned.:wq 2016-06-16 17:15:27 +02:00
JC Brand
70135ba070 Add new config option notify_all_room_messages 2016-06-16 13:29:49 +02:00
JC Brand
249fb0fec5 Don't increment messages counter for MAM messages. 2016-06-16 10:39:08 +02:00
JC Brand
2c6f6bfef2 Merge branch 'soft-dependencie' 2016-06-13 07:45:15 +00:00