Update jitsi-dev.md

This commit is contained in:
Resynth 2020-07-17 11:24:47 +00:00 committed by resynth1943
parent 6f04841e4b
commit bbd1974eb4

View file

@ -1,10 +1,10 @@
# Jitsi wrapper developer docs # Jitsi wrapper developer docs
*If you're looking for information on how to set up Jitsi in your Riot, see *If you're looking for information on how to set up Jitsi in your Element, see
[jitsi.md](./jitsi.md) instead.* [jitsi.md](./jitsi.md) instead.*
These docs are for developers wondering how the different conference buttons work These docs are for developers wondering how the different conference buttons work
within Riot. If you're not a developer, you're probably looking for [jitsi.md](./jitsi.md). within Element. If you're not a developer, you're probably looking for [jitsi.md](./jitsi.md).
## Brief introduction to widgets ## Brief introduction to widgets
@ -17,8 +17,8 @@ in the react-sdk), though for some widgets special integration can be done. v2 w
have a `data` object which helps achieve that special integration, though v1 widgets have a `data` object which helps achieve that special integration, though v1 widgets
are best iframed and left alone. are best iframed and left alone.
Widgets have a `postMessage` API they can use to interact with Riot, which also allows Widgets have a `postMessage` API they can use to interact with Element, which also allows
Riot to interact with them. Typically this is most used by the sticker picker (an Element to interact with them. Typically this is most used by the sticker picker (an
account-level widget), though widgets like the Jitsi widget will request permissions to account-level widget), though widgets like the Jitsi widget will request permissions to
get 'stuck' into the room list during a conference. get 'stuck' into the room list during a conference.
@ -28,7 +28,7 @@ Widgets can be added with the `/addwidget <url>` command.
Integration managers (like Scalar and Dimension) are accessible via the 4 squares in Integration managers (like Scalar and Dimension) are accessible via the 4 squares in
the top right of the room and provide a simple UI over top of bridges, bots, and other the top right of the room and provide a simple UI over top of bridges, bots, and other
stuff to plug into a room. They are a separate service to Riot and are thus iframed stuff to plug into a room. They are a separate service to Element and are thus iframed
in a dialog as well. They also have a `postMessage` API they can use to interact with in a dialog as well. They also have a `postMessage` API they can use to interact with
the client to create things like widgets, give permissions to bridges, and generally the client to create things like widgets, give permissions to bridges, and generally
set everything up for the integration the user is working with. set everything up for the integration the user is working with.
@ -51,7 +51,7 @@ over `postMessage`, even if they aren't going to be using the widget APIs).
Widgets added with the `/addwidget` command will *not* be wrapped as they are not going Widgets added with the `/addwidget` command will *not* be wrapped as they are not going
through an integration manager. The widgets themselves *should* also work outside of through an integration manager. The widgets themselves *should* also work outside of
Riot. Widgets currently have a "pop out" button which opens them in a new tab and Element. Widgets currently have a "pop out" button which opens them in a new tab and
therefore have no connection back to Riot. therefore have no connection back to Riot.
## Jitsi widgets from integration managers ## Jitsi widgets from integration managers
@ -65,27 +65,27 @@ server they specified in their config.json - this is expected.
Some integration managers allow the user to change the conference name while others Some integration managers allow the user to change the conference name while others
will generate one for the user. will generate one for the user.
## Jitsi widgets generated by Riot itself ## Jitsi widgets generated by Element itself
When the user clicks on the call buttons by the composer, the integration manager is When the user clicks on the call buttons by the composer, the integration manager is
not involved in the slightest. Instead, Riot itself generates a widget event, this time not involved in the slightest. Instead, Element itself generates a widget event, this time
using the config.json parameters, and publishes that to the room. If there's only two using the config.json parameters, and publishes that to the room. If there's only two
people in the room, a plain WebRTC call is made instead of using a widget at all - these people in the room, a plain WebRTC call is made instead of using a widget at all - these
are defined in the Matrix specification. are defined in the Matrix specification.
The Jitsi widget created by Riot uses a local `jitsi.html` wrapper (or one hosted by The Jitsi widget created by Element uses a local `jitsi.html` wrapper (or one hosted by
`https://riot.im/app` for desktop users or those on non-https domains) as the widget `https://app.element.io` for desktop users or those on non-https domains) as the widget
`url`. The wrapper has some basic functionality for talking to Riot to ensure the `url`. The wrapper has some basic functionality for talking to Element to ensure the
required `postMessage` calls are fulfilled. required `postMessage` calls are fulfilled.
**Note**: Per [jitsi.md](./jitsi.md) the `preferredDomain` can also come from the server's **Note**: Per [jitsi.md](./jitsi.md) the `preferredDomain` can also come from the server's
client .well-known data. client .well-known data.
## The Jitsi wrapper in Riot ## The Jitsi wrapper in Element
Whenever Riot sees a Jitsi widget, it ditches the `url` and instead replaces it with Whenever Element sees a Jitsi widget, it ditches the `url` and instead replaces it with
its local wrapper, much like what it would do when creating a widget. However, instead its local wrapper, much like what it would do when creating a widget. However, instead
of using one from riot.im/app, it will use one local to the client instead. of using one from [app.element.io](https://app.element.io), it will use one local to the client instead.
The wrapper is used to provide a consistent experience to users, as well as being faster The wrapper is used to provide a consistent experience to users, as well as being faster
and less risky to load. The local wrapper URL is populated with the conference information and less risky to load. The local wrapper URL is populated with the conference information