Commit Graph

352 Commits (ba3e7e24ba0ac2e8ceea81f6f6b663ba56dc2a15)

Author SHA1 Message Date
Michael Telatynski ae65ed5c2e Merge branch 'develop' of https://github.com/matrix-org/matrix-react-sdk into resizable-appsdrawer
 Conflicts:
	res/css/views/rooms/_AppsDrawer.scss
2020-08-20 10:26:35 +01:00
Travis Ralston 96087d61f6 Convert feature setting usages to regular settings 2020-08-17 13:12:18 -06:00
J. Ryan Stinnett 538e222d1f
Merge pull request #5081 from matrix-org/msuess/fix-edit-multiple-widget-instances
get screen type from app prop
2020-08-10 14:14:25 +01:00
J. Ryan Stinnett ce226ab534 Replace Riot with Element in docs and comments
This only covers the simple cases of references to issues and repos. More
complex areas, such as deployment scripts, will be handled separately.

Part of https://github.com/vector-im/element-web/issues/14864
2020-08-03 18:33:36 +01:00
Marco Süß 5b8a8ecc5e get screen type from app prop 2020-08-03 16:26:25 +02:00
Travis Ralston 1f7f40736b Fix imports for SettingLevel to point at new file 2020-07-28 11:53:43 -06:00
Jorik Schellekens b110639c76 Merge remote-tracking branch 'origin' into joriks/eslint-config 2020-06-29 16:49:33 +01:00
Andrew Morgan 6ea5dc7b7c Change the look of the spinner 2020-06-26 01:19:38 +01:00
Jorik Schellekens 7699aafcaf Use new eslint package- fix lint issues in ts and js 2020-06-23 17:01:19 +01:00
Travis Ralston e4aeabe5a6
Merge pull request #4444 from pv/jitsi-popout-immediate-join
Ensure active Jitsi conference is closed on widget pop-out
2020-06-07 20:22:39 -06:00
Travis Ralston 90a898d03f Move dispatcher into a subdirectory
We're expecting to have a whole bunch of types for the dispatched payloads, so pull the thing into a directory we can throw them in.
2020-05-13 21:07:50 -06:00
David Baker 50107ebe47 Re-fix OpenID requests from widgets
https://github.com/matrix-org/matrix-react-sdk/pull/4591 reverted
https://github.com/matrix-org/matrix-react-sdk/pull/4459. We need
to pass both URLs as we need both the wURL (for the widget's 'identity'
ie. OpenID) and the URL that's actually in the iframe (for the
messaging).
2020-05-13 16:10:40 +01:00
David Baker 92824411e8 Fix persistent widgets on desktop / http
WidgetMessaging needs the URL of the widget that gets rendered into
the iframe because that's where the postmessages will be coming from.

Fixes https://github.com/vector-im/riot-web/issues/13369
2020-05-13 12:33:10 +01:00
Pauli Virtanen 2e7bd2e3f0 Use flexboxes in AppTile/AppDrawer CSS for automatic resizing
Using flexboxes removes the need for pixel constants, and the app
content now resizes to fill the tiles.

Signed-off-by: Pauli Virtanen <pav@iki.fi>
2020-04-30 20:14:48 +03:00
Pauli Virtanen 38962560ac Style fixes
Signed-off-by: Pauli Virtanen <pav@iki.fi>
2020-04-28 02:29:20 +03:00
Travis Ralston 50783c2432 Appease the linter 2020-04-23 23:25:53 -06:00
Travis Ralston 28865e27bc Don't overwrite the 'domain' data key for all widgets
Some widgets, which aren't Jitsi widgets, might need this to be something else.
2020-04-23 15:24:27 -06:00
Travis Ralston efaf4fbbda Decode dollar signs in safe widget URLs before rendering/templating
Fixes https://github.com/vector-im/riot-web/issues/13344
2020-04-23 15:24:27 -06:00
Travis Ralston d66d497638
Merge pull request #4460 from matrix-org/travis/integ-logging
Update logging for unmanaged widgets, and add TODO comments for other areas
2020-04-23 08:17:54 -06:00
Pauli Virtanen 798f5d401b Ensure active Jitsi conference is closed on widget pop-out
Signed-off-by: Pauli Virtanen <pav@iki.fi>
2020-04-22 20:44:05 +03:00
Pauli Virtanen cf4137d4b2 Make WidgetAPI an EventEmitter + use for terminate + cleanups
Use EventEmitter for emitting events, rename terminate event code,
plus misc cleanups from review.

Signed-off-by: Pauli Virtanen <pav@iki.fi>
2020-04-22 19:37:52 +03:00
Pauli Virtanen 352ea29d17 Implement widget ReceiveTerminate capability
Signed-off-by: Pauli Virtanen <pav@iki.fi>
2020-04-22 19:37:52 +03:00
Pauli Virtanen 94745e9407 Minimize widget immediately, and end it later
Signed-off-by: Pauli Virtanen <pav@iki.fi>
2020-04-22 19:37:52 +03:00
Pauli Virtanen 4fac781051 Tell widgets to terminate gracefully in AppTile:_endWidgetActions
If the widget fails to terminate in two seconds, proceed with disposing
the iframe nevertheless.

This allows e.g. Jitsi to hangup the conference when minimizing the
widget, instead of abrupt disconnect that can leave ghost users behind.

Signed-off-by: Pauli Virtanen <pav@iki.fi>
2020-04-22 19:37:52 +03:00
Travis Ralston 3a360b91b9 Update logging for unmanaged widgets, and add TODO comments for other areas
Just a minor thing that is bothersome. Renaming classes and functions is a bit more of an impact than is worth right now, so have settled for littering TODO comments all over the place.
2020-04-22 00:34:08 -06:00
Travis Ralston d851f2e45f Fix OpenID requests from widgets
Fixes https://github.com/vector-im/riot-web/issues/13131

Widgets can request an OpenID token to authenticate the user when the widget is missing authentication information. A common case for this is the Dimension sticker picker: sometimes the Riot is running in doesn't have the configuration to match the Dimension instance, so Riot rightly refuses to send an auth token to the widget. When this happens, it requests a token through postMessage().

There's a toggle on the permission dialog to remember the setting, which is the widget's security key. As an added measure, the security key generation ensures the widget URL matches as the 'remember this choice' toggle will silently work in the background, and it could be dangerous if the widget's URL changed and Riot secretly allows the widget to identify the user. This check was failing because the WidgetMessaging class was being set up with the rendered URL, which will not match the widget's URL at all. To fix this, we simply use the widget's URL to set up the messaging, which by proxy uses the right URL in calculating the security key.
2020-04-22 00:27:20 -06:00
Travis Ralston dc92f557fd Support m.jitsi-typed widgets as Jitsi widgets
Fixes https://github.com/vector-im/riot-web/issues/9268
2020-04-09 15:11:57 -06:00
Travis Ralston db3c7a8f1c Obliterate widgets when they are minimized
Fixes https://github.com/vector-im/riot-web/issues/12810

We do this to all widgets as we can't guarantee what sorts of other widgets might need similar treatment.
2020-04-09 14:31:46 -06:00
Travis Ralston b5aaae1c27 Fix encoding of widget arguments
Fixes https://github.com/vector-im/riot-web/issues/12985

This is done by using a more modern API and de-encoding dollar signs.
2020-04-08 12:58:52 -06:00
Travis Ralston 5c2841323e Appease the linter by turning it off 2020-04-01 14:45:54 -06:00
Travis Ralston 47e5cfecf2 Silence usages of componentWillReceiveProps
For https://github.com/vector-im/riot-web/issues/12877
2020-04-01 14:35:39 -06:00
Travis Ralston ba0a9c8439 Use console.log in place of console.warn for less warnings
These aren't react warnings, but they are distracting in the logs.
2020-04-01 13:59:48 -06:00
Travis Ralston 0fcbe40bec
Merge pull request #4314 from matrix-org/travis/react-warnings/2-code-quality
Fix a number of minor code quality issues
2020-04-01 11:13:46 -06:00
Travis Ralston 59a99bbad8
Merge pull request #4313 from matrix-org/travis/react-warnings/1-componentDidMount
Use componentDidMount in place of componentWillMount where possible
2020-04-01 11:13:04 -06:00
David Baker 8aa24f8987 Fix jitsi popout URL
Needs the template variables filled in
2020-04-01 14:42:17 +01:00
David Baker ce68b960f4 Use our own jitsi widget for the popout URL
rather than the URL supplied by the widget
2020-04-01 13:58:44 +01:00
David Baker 9b4ce02eaf lint 2020-04-01 11:28:02 +01:00
David Baker a2f92e93a7 Use URL without wurl params for popout
The popout can't be assumed to have the widget API available, so
just leave these params out.
2020-04-01 11:18:45 +01:00
David Baker 538147f7fa Better support for widgets overriding their URLs
Move the URL processing into AppTile so that the widget can have a
URL used for embedding in the page and a separate one for popping
out into a browser.
2020-04-01 10:00:33 +01:00
Travis Ralston 3f99332f4b Use componentDidMount in place of componentWillMount where possible
This fixes a common React warning we see. Most of these components should be using constructors instead, however componentDidMount is just as good (and doesn't require converting most of these).

Conversion to classes will be done in a later stage of React warning fixes.

For https://github.com/vector-im/riot-web/issues/12877
2020-03-31 14:14:17 -06:00
Travis Ralston c86d75693b Fix a number of minor code quality issues
Most of these are complaints from my IDE. Discovered by going through nearly every file looking for React warnings.
2020-03-31 14:05:56 -06:00
Travis Ralston bdcb65de77 Support and send the config over to capable widgets
For https://github.com/vector-im/riot-web/pull/12845
2020-03-24 09:55:54 -06:00
Travis Ralston 9da57817d1 Use a local wrapper for Jitsi calls
Requires https://github.com/vector-im/riot-web/pull/12780
2020-03-18 15:50:12 -06:00
Michael Telatynski d783ce86c8 Use noreferrer in addition to noopener for edge case browsers
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-23 22:14:29 +00:00
Michael Telatynski c97de43f69 Remove unused fetch polyfills, querystring, require-json. Move glob to dev-dep
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-01-18 02:01:45 +00:00
Travis Ralston 042bd35d79 Fix MatrixClientPeg imports 2019-12-22 21:15:54 -07:00
Travis Ralston d56f0f2a25 Convert many imports to handle ES6 exports
Reliant upon https://github.com/matrix-org/matrix-react-sdk/pull/3761
2019-12-22 21:04:42 -07:00
Michael Telatynski d22985f12e Migrate string refs over to createRef
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-12-08 12:16:17 +00:00
Michael Telatynski 901e402a5c apply renames suggested in PR review
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-12-02 23:23:11 +00:00
Michael Telatynski 757f811126 s/ContextualMenu/ContextMenu/
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-12-02 23:21:59 +00:00
Michael Telatynski 3847996b5b transition Tooltips over to deprecated code
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-11-28 20:26:09 +00:00
Michael Telatynski 6c5b777a77 Consolidate all except tooltips
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-11-28 18:16:59 +00:00
Travis Ralston 7b013ecc69 Fix persisted widgets getting stuck at loading screens
The widget itself is rendered underneath the loading screen, so we just have to disable the loading state.

This commit also removes the "is" attribute because React 16 includes unknown attributes: https://reactjs.org/blog/2017/09/08/dom-attributes-in-react-16.html

Fixes https://github.com/vector-im/riot-web/issues/11536
2019-11-27 12:54:31 -07:00
Matthew Hodgson 9f455fae4b
Merge branch 'develop' into matthew/fix_logging 2019-11-26 10:19:48 +00:00
Matthew Hodgson 9fd45d1f14 console.log doesn't take %s substitutions 2019-11-26 01:14:03 +00:00
Travis Ralston 86783e4439
Merge pull request #3645 from matrix-org/travis/widget-menu
Move many widget options to a context menu
2019-11-21 08:10:28 -07:00
Travis Ralston 5d612bb370
Merge pull request #3644 from matrix-org/travis/widget-encryption
Re-add encryption warning to widget permission prompt
2019-11-21 08:04:56 -07:00
Michael Telatynski d3f872bf7a Merge branches 'develop' and 't3chguy/remove_bluebird' of github.com:matrix-org/matrix-react-sdk into t3chguy/remove_bluebird 2019-11-21 11:15:32 +00:00
Travis Ralston fd12eb28e7 Move many widget options to a context menu
Part of https://github.com/vector-im/riot-web/issues/11262
2019-11-20 19:17:42 -07:00
Travis Ralston 62a2c7a51a Re-add encryption warning to widget permission prompt 2019-11-20 16:26:06 -07:00
Michael Telatynski 6121420113
Merge branch 'develop' into t3chguy/remove_bluebird 2019-11-20 15:21:23 +00:00
Travis Ralston b185eed462 Wire up the widget permission prompt to the cross-platform setting
This doesn't have any backwards compatibility with anyone who has already clicked "Allow". We kinda want everyone to read the new prompt, so what better way to do it than effectively revoke all widget permissions?

Part of https://github.com/vector-im/riot-web/issues/11262
2019-11-18 17:56:33 -07:00
Michael Telatynski d4d51dc61f Rip out the remainder of Bluebird 2019-11-18 10:03:05 +00:00
Travis Ralston 6b726a8e13 Implement the bulk of the new widget permission prompt design
Part 1 of https://github.com/vector-im/riot-web/issues/11262

This is all the visual changes - the actual wiring of the UI to the right places is for another PR (though this PR still works independently).

The help icon is known to be weird here - it's a bug in the svg we have. The tooltip also goes right instead of up because making the tooltip go up is not easy work for this PR - maybe a future one if we *really* want it to go up.
2019-11-15 14:26:16 -07:00
Michael Telatynski 168b1b68bb Revert "s/.done(/.then(/ since modern es6 track unhandled promise exceptions"
This reverts commit 09a8fec2
2019-11-12 11:56:21 +00:00
Michael Telatynski 09a8fec261 s/.done(/.then(/ since modern es6 track unhandled promise exceptions 2019-11-12 11:51:23 +00:00
Travis Ralston e46976be72 Match widgets up with their integration manager 2019-10-29 11:49:15 -06:00
Michael Telatynski a782baf510 React error/warning cleanup
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-08 12:10:37 +01:00
Travis Ralston 838e115b72
Merge pull request #3338 from matrix-org/t3chguy/fix_jitsi_persisted_breaking_randomly
Only Destroy the expected persistent widget, not *ANY*
2019-08-28 10:49:29 -06:00
Travis Ralston b3cda4b19a Support multiple integration managers behind a labs flag
Fixes https://github.com/vector-im/riot-web/issues/10622
Implements [MSC1957](https://github.com/matrix-org/matrix-doc/pull/1957)

Design is not final.
2019-08-23 09:12:40 -06:00
Michael Telatynski cd6a980c7e Only Destroy the expected persistent widget, not *ANY*
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-08-22 16:57:51 +01:00
Jason Robinson 29085895a7 Fix regression on widget panel edit button
Due to commit ffa49df889
the parameters for the call to open a widget in edit mode from the
widget panel in a room has broken. The `screen` parameter needs
to be prefixed with `type_` as it was before.

This corresponds to parameters supplied when creating the URL when
opening a widget in edit mode through Scalar screens.

Signed-off-by: Jason Robinson <jasonr@matrix.org>
2019-08-20 15:55:57 +03:00
David Baker 4afed0fab4
Merge pull request #3313 from matrix-org/t3chguy/fix_jitsi_persisted_breaking_randomly
Fix Persisted Widgets (Jitsi) randomly closing on room change
2019-08-15 10:52:24 +01:00
Michael Telatynski 7b17ea1fa5 Fix Persisted Widgets (Jitsi) randomly closing on room change
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-08-14 23:15:49 +01:00
Travis Ralston ffa49df889 Refactor integration manager handling into a common place
It was already in a common place, but this is the boilerplate for supporting multiple integration managers, and multiple integration manager sources. 

For https://github.com/vector-im/riot-web/issues/4913 / https://github.com/vector-im/riot-web/issues/10161
2019-08-09 16:08:06 -06:00
David Baker 2eb8a8879b
Merge pull request #3199 from matrix-org/dbkr/terms
ToS for ISes/IMs: prompt on use screen
2019-07-23 10:32:11 +01:00
J. Ryan Stinnett 09c2d899ac Defer IM token until widget is shown and permission granted
This defers the work to request the IM token when displaying a widget until
after we know that widget will actually be shown and the user has granted
permission for this widget to be displayed.

This is useful in general to avoid making unnecessary token checks, but it's
particularly helpful with the new Terms API, so that we only show the Terms flow
when widget are actually being used (as opposed to entering the room where
widgets exist, but haven't been shown / permitted).

Part of https://github.com/vector-im/riot-web/issues/10088
2019-07-22 11:50:54 +01:00
David Baker d4af8d4993 Use showIntegrationsManager in other places 2019-07-09 18:56:39 +01:00
Travis Ralston 8f6e8c1ec7 Appease the linter 2019-06-17 15:51:14 -06:00
Travis Ralston d2d0cb2e9e Port AppTile (widgets) over to new integration manager dialog props 2019-06-17 15:34:30 -06:00
Travis Ralston 51750cf153 General cleanup of handling for WidgetMessaging instances
When setting, delete the old one. Because delete checks if it exists first, we can safely call this.

The change in FromWidgetPostMessageApi is just something noticed while debugging.
2019-04-01 19:50:05 -06:00
David Baker 1fe830d1c6 Remove noreferrer on widget pop-out
Having the referrer allows widgets to do customisation based on what
riot instance is embedding it. It gets a referrer when we embed it
in the iframe so there's nothing gained by suppressing it here.
2019-03-27 13:27:57 +00:00
Travis Ralston ddcb7a68bd
Merge pull request #2781 from matrix-org/travis/openid-widget
Widget OpenID reauth implementation
2019-03-27 03:42:39 -06:00
Travis Ralston a8ae63bb06 Minimize stickerpicker when the title is clicked
Fixes https://github.com/vector-im/riot-web/issues/6437

This also fixes a bug where if the room had apps open and you clicked the sticker picker's title, you'd end up closing the apps and not the picker.
2019-03-23 23:50:06 -06:00
Travis Ralston 3654c895eb Appease the linter 2019-03-23 23:31:19 -06:00
Travis Ralston 2dcb40f1be Track OpenID automatic permissions by (widgetLocation, widgetUrl) 2019-03-23 23:25:31 -06:00
Travis Ralston b68960ad26 Reload widget messaging when widgets reload
Fixes a bug for some widgets where they cannot do their startup routine (capabilities negotiation, etc) when someone maximizes the widget. By reloading the widget messaging, we ensure the widget is kept in the loop.
2019-03-15 22:24:27 -06:00
Jason Robinson 02ff1763a2 Ensure scalar_token is valid before opening integrations manager
Since Scalar (and other integration managers) are loaded as apps into
an iframe, a valid `scalar_token` must exist when loading the app.

It is possible that a scalar_token becomes invalid between the time
when the integration manager button was rendered and the user clicking
the link. Here we make a call to integration manager `/account`
before trying to render the integration manager, which ensures we
have a valid token for the integration manager to work with.

Moving the scalar token revalidation to the cases where it is actually
needed could make it possible to decrease the amount of Scalar /account
calls we do when switching rooms, which is currently 3.

Signed-off-by: Jason Robinson <jasonr@matrix.org>
2019-03-13 11:47:00 +02:00
Bruno Windels f189ff54a8 hide delete & cancel button on stickers are they weren't visible before 2019-02-12 17:01:05 +01:00
Bruno Windels 6d2e582083 fix lint 2019-02-02 07:46:52 +01:00
Bruno Windels e2ce12f5c1 wip 2019-02-01 23:15:14 +01:00
J. Ryan Stinnett 20e296b20e Convert image URLs in React to `require` calls
This allows Webpack to insert the proper image URL after builds steps like
adding a hash and so on. The path you supply to `require` is relative to the JS
source file, just like any other would be.
2019-01-17 22:06:49 -06:00
David Baker 1ca91370f3
Merge pull request #2372 from matrix-org/dbkr/electron_sandbox
React-sdk changes to support sandboxed electron
2018-12-19 09:48:05 +00:00
David Baker 3a8b9ab850 unused import 2018-12-18 17:57:23 +00:00
David Baker 37b3644fd9 React-sdk changes to support sandboxed electron 2018-12-18 17:40:30 +00:00
Willem Mulder d304c35b38 Allow widgets to autoplay media
This is useful for e.g. webcam streams in widgets.

Signed-off-by: Willem Mulder <willemmaster@hotmail.com>
2018-12-18 00:43:37 +00:00
Travis Ralston aaeb6e4978 Use about:blank instead 2018-10-25 15:59:42 -06:00
Travis Ralston 7ef08314b8 Redirect widgets to another location before deleting them
This is so that shutdown hooks in the widget can correctly fire, such as Jitsi's hook to abandon its hold on the webcam.

Fixes https://github.com/vector-im/riot-web/issues/7351
2018-10-19 16:23:19 -06:00
Travis Ralston c75beb0196 Revert "Redirect widgets to another location before deleting them"
This reverts commit 275d88dd4f.
2018-10-19 16:22:48 -06:00
Travis Ralston 275d88dd4f Redirect widgets to another location before deleting them
This is so that shutdown hooks in the widget can correctly fire, such as Jitsi's hook to abandon its hold on the webcam.

Fixes https://github.com/vector-im/riot-web/issues/7351
2018-10-19 16:22:20 -06:00