Commit Graph

56 Commits

Author SHA1 Message Date
JC Brand
c08ee00fcd Enforce uni-view in headless code
When we're showing only one chat at a time, we want to make sure that
all other chats have their `hidden` flag set to `true`.

Previously this was done in chatboxviews, but given that we want to
render UI based on state, this should be done in the headless part of
Converse.

As a result of the changes, the `beforeShowingChatView` has been
removed.
2020-10-27 13:00:43 +01:00
JC Brand
904a1394eb Always render avatar via lit-html
Fixes #2244 by checking if image already is in the `data:` format.
2020-09-27 10:31:53 +02:00
JC Brand
5dac2d8873 muc-views: Use lit-html instead of lodash templates 2020-09-27 10:31:32 +02:00
JC Brand
78f8f73fea Get rid of converse-uniview plugin
Instead of overriding createChatBox, set 'hidden' flag via defaults
2020-09-21 18:08:48 +02:00
JC Brand
b7654f1fc7 Move some View declarations out of the plugin initialize method
Precursor to some refactoring planned
2020-09-09 15:02:40 +02:00
JC Brand
4e7b29e417 Make sure initialize can be awaited...
before `converse.initialize` has been called

In the process, remove other "core" promises. There is no core or
community plugins code awaiting on them and since it's possible to
call `converse.initialize` twice, I'm not sure it makes sense to even have them.

Also removed unused error class IllegalMessage.
2020-09-03 17:07:44 +02:00
JC Brand
d5c93eb024 Create converse-root custom element
This element can be used to declaratively insert Converse into the DOM.

You can put `<converse-root>` into the DOM (e.g. by rendering it inside
a React component) before or afer Converse has loaded and/or has been
initialized.
2020-09-03 13:06:17 +02:00
JC Brand
696c8e3522 Don't clear #conversejs via innerHTML
It appears to break subsequent lit-html `render` calls on the
`#conversejs` element because lit-html still remembers parts from before
the element was cleared.
2020-07-30 12:17:23 +02:00
JC Brand
2fcce78144 Add a cleanup hook
- Move view-related cleanup code out of core.
- Call `remove` on `_converse.chatboxviews` during cleanup
2020-07-30 11:04:07 +02:00
JC Brand
4927d561a5 Maintain scroll position when re-inserting #conversejs element 2020-07-29 09:56:22 +02:00
Ariel Fuggini
82357f7d97 Created a web component registry and exports components as modules in order to facilitate their customization 2020-07-07 11:44:34 +02:00
JC Brand
f4f183bc46 Rendeer SVG icons inline
to overcome cross-site restrictions on using the `use` attribute of the `<svg>` element.
2020-07-02 01:21:40 +02:00
JC Brand
cf258f0b4c Add new public API method converse.insertInto 2020-06-10 12:42:46 +02:00
JC Brand
b0cb489769 Use @converse/skeletor, lodash-es and latest webpack-dev-server 2020-06-08 19:38:16 +02:00
JC Brand
830e060568 Rename api.settings.update to api.settings.extend
This is to try and make it clearer that this method won't override
initialization settings, and is instead simply to add to the default
settings.
2020-06-03 09:32:16 +02:00
JC Brand
bf4b3efa5b Import _converse and api 2020-05-18 10:54:37 +02:00
JC Brand
7e2552bd8c core: Allow multiple imports 2020-04-23 13:50:35 +02:00
JC Brand
030c26a8ab Use api shortcut instead of _converse.api 2020-03-31 13:16:24 +02:00
JC Brand
631b9bb438 Use the settings API for setting and getting config settings
This is an initial step towards no longer storing and accessing settings
directly via the `_converse` object
2020-03-31 11:57:03 +02: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
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
720087bef2 controlbox: remove unnecessary overrides 2019-12-11 08:38:28 +01:00
JC Brand
8125eaed57 chatboxviews: Remove ineffectual override
`initStatus` is no longer on the `_converse` object, so the override
wasn't being applied and chat boxes get closed when the
`clearSession` event fires.
2019-12-10 15:21:28 +01: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
8780f7a128 Fix linting errors (no-unused-vars) 2019-10-09 16:27:58 +02:00
JC Brand
cc91f3751e Add listenTo instead of on to avoid memory leaks 2019-09-06 16:04:06 +02:00
JC Brand
21a9ea7365 converse-message-view: Add hooks before/after message text transformations 2019-08-13 15:31:05 +02:00
JC Brand
7a590f7c22 Stop using certain lodash methods.
* _.isNil
* _.noop
* _.isNull
2019-08-05 10:56:22 +02:00
JC Brand
d95a7987ce Fix linting errors and add @module jsdoc directives 2019-07-11 10:48:52 +02:00
JC Brand
83bc851f20 Fixes #1455. Updates #1619
Avatar didn't update a second time due to `canvas` element being expected
2019-06-26 10:24:27 +02:00
JC Brand
73fd3d6a5f Fade out ephemeral messages 2019-06-12 07:09:22 +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
b876500865 Update to latest backbone.overview 2019-05-23 14:44:10 +02:00
supun19
d1572f3506 iOS viewport was less than 100vh so had to redefine vh units
fixes #1571
2019-05-15 18:32:11 +02:00
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
4eb6df92c6 Bugfix. Controlbox closed state not remembered
in overlay view mode.

Also refactored a bit to put the method, which determines whether a
chatbox may be shown, on the chatbox itself.
2019-04-16 13:38:46 +02:00
JC Brand
76a7c3fa9b Bugfix. Update to new function which has been renamed. 2019-04-11 20:08:53 +02:00
JC Brand
f1899d0977 Looser coupling with converse-vcard
To make it easier to remove it without breaking stuff.
2019-04-10 19:35:35 +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
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
Emmanuel Gil Peyrot
b7ae9f212c Replace http: with https: in conversejs.org links 2019-03-04 17:47:45 +01:00
JC Brand
9b0e23dcc6 Ensure new contact is attached to existing chatbox
When a new contact is added, check if we already have a chatbox open for it,
and if so attach it to the chatbox.
2019-02-22 23:05:03 +01:00
JC Brand
c026dc8a86 New copyright year 2019-02-18 20:23:18 +01:00
JC Brand
aa274f41c2 Make background darker and add new logo 2019-01-02 22:54:04 +01:00
JC Brand
e38daf34f7 Remove coupling between converse-chatboxes and converse-roster
In embedded mode (singleton) we don't need or want the roster, so we
should be able to disable it.

updates #1374
2018-12-12 18:52:40 +01:00
Emmanuel Gil Peyrot
ab5dd4a146 Switch avatar rendering from canvas to SVG.
This delegates the calculation of the aspect ratio to the browser, and
generally simplifies the code.

Fixes #1156.
2018-11-14 16:03:37 +01:00