Compare commits

...

118 Commits

Author SHA1 Message Date
RiotRobot
413b26d71b v1.5.14 2020-03-30 13:48:40 +01:00
RiotRobot
45ff2fdcde Prepare changelog for v1.5.14 2020-03-30 13:48:39 +01:00
RiotRobot
5bd155c294 v1.5.14 2020-03-30 13:45:32 +01:00
RiotRobot
51f4327ce1 Upgrade matrix-react-sdk to 2.3.0 2020-03-30 13:45:21 +01:00
RiotRobot
37cebf38cc Upgrade matrix-js-sdk to 5.2.0 2020-03-30 13:44:42 +01:00
RiotRobot
0a83f9c763 v1.5.14-rc.1 2020-03-26 13:31:03 +00:00
RiotRobot
f5c5c1b991 Prepare changelog for v1.5.14-rc.1 2020-03-26 13:31:03 +00:00
RiotRobot
bfcb46c4fd v1.5.14-rc.1 2020-03-26 13:28:13 +00:00
RiotRobot
5b35d6e570 Upgrade matrix-react-sdk to 2.3.0-rc.1 2020-03-26 13:28:04 +00:00
RiotRobot
9269d9b669 Upgrade matrix-js-sdk to 5.2.0-rc.1 2020-03-26 13:27:40 +00:00
J. Ryan Stinnett
ec32abbb89 Merge pull request #12890 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2020-03-26 12:14:15 +00:00
Weblate
c1884a26aa Merge branch 'origin/develop' into Weblate. 2020-03-26 12:03:29 +00:00
Michael Telatynski
1d109bb067 Merge pull request #12869 from vector-im/t3chguy/app_load_tweaks
App load tweaks
2020-03-26 12:03:23 +00:00
Weblate
35e443975d Merge branch 'origin/develop' into Weblate. 2020-03-26 11:43:07 +00:00
Szimszon
1963270d64 Translated using Weblate (Hungarian)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2020-03-26 11:43:06 +00:00
Tirifto
3072bbb0d7 Translated using Weblate (Esperanto)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2020-03-26 11:43:06 +00:00
J. Ryan Stinnett
1697cdc5a1 Merge pull request #12730 from vector-im/jryans/review-policy
Add review policy doc
2020-03-26 11:43:00 +00:00
J. Ryan Stinnett
da249cbc40 Merge remote-tracking branch 'origin/develop' into jryans/review-policy 2020-03-26 11:34:29 +00:00
J. Ryan Stinnett
5b94d8bbd7 Add line about UI for network activity 2020-03-26 11:28:51 +00:00
Weblate
8549755fd5 Merge branch 'origin/develop' into Weblate. 2020-03-25 15:25:17 +00:00
David Baker
5c51063070 Merge pull request #12875 from vector-im/dbkr/fix_artifact_search
Fix artifact searching in redeployer
2020-03-25 15:25:12 +00:00
David Baker
758d021f97 Merge remote-tracking branch 'origin/develop' into dbkr/fix_artifact_search 2020-03-25 15:18:20 +00:00
David Baker
fea600ba0a Fix artifact searching in redeployer
Indenting fail
2020-03-25 15:12:53 +00:00
Michael Telatynski
fd385f8450 simplify loadConfig
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 14:37:28 +00:00
Michael Telatynski
92d8ee355d merge initial-load.ts into init.ts as its no longer used by Jitsi
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 14:32:37 +00:00
Michael Telatynski
1f94b25d25 Fix copyrights
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 14:28:07 +00:00
Michael Telatynski
8929cd9c08 Merge branches 'develop' and 't3chguy/app_load_tweaks' of github.com:vector-im/riot-web into t3chguy/app_load_tweaks 2020-03-25 14:26:48 +00:00
Weblate
24d85c5cd7 Merge branch 'origin/develop' into Weblate. 2020-03-25 14:26:12 +00:00
Ege
4b7cf489c8 Translated using Weblate (Turkish)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2020-03-25 14:26:12 +00:00
roket1428
990a96b56d Translated using Weblate (Turkish)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2020-03-25 14:26:12 +00:00
Ganzo DG
cb23da12cb Translated using Weblate (Mongolian)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/mn/
2020-03-25 14:26:11 +00:00
Travis Ralston
dec2f2a39e Merge pull request #12845 from vector-im/travis/config-wrapper
Fix Jitsi wrapper being large by getting the config from elsewhere
2020-03-25 08:26:06 -06:00
Michael Telatynski
6315907585 Typescript stuff.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 14:07:22 +00:00
Michael Telatynski
6fb9fc4e6f move loadLanguage to init.ts
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 13:55:25 +00:00
Michael Telatynski
df2b966acd move loadOlm to init.ts
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 13:54:02 +00:00
Michael Telatynski
b09b47543b Merge branches 'develop' and 't3chguy/app_load_tweaks' of github.com:vector-im/riot-web into t3chguy/app_load_tweaks 2020-03-25 12:45:10 +00:00
Michael Telatynski
a808d26764 Enable webpack reuseExistingChunk
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 12:41:33 +00:00
Michael Telatynski
e669c681e2 Fetch both config.json-s at the same time, first one fails 99% of the time
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 12:39:42 +00:00
Weblate
4d983f037e Merge branch 'origin/develop' into Weblate. 2020-03-24 16:41:35 +00:00
Michael Telatynski
c10732736c Merge pull request #12832 from vector-im/t3chguy/webpack-stats
Add webpack stats which will be used by CI and stored to artifacts
2020-03-24 16:41:30 +00:00
Travis Ralston
bde5679d11 Ask for Riot config over postMessage for the Jitsi widget
Fixes https://github.com/vector-im/riot-web/issues/12839 by not using the app load order that doesn't detect the right platform anyways.
2020-03-24 09:54:15 -06:00
Weblate
783f3c6955 Merge branch 'origin/develop' into Weblate. 2020-03-24 15:15:39 +00:00
Travis Ralston
4de93a8cdd Merge pull request #12842 from vector-im/revert-12836-travis/jitsi-wrapper
Revert "Remove useless app preloading from Jitsi widget wrapper"
2020-03-24 09:15:34 -06:00
Travis Ralston
4087ba0c5c Revert "Remove useless app preloading from Jitsi widget wrapper" 2020-03-24 09:14:59 -06:00
Weblate
cd399f0284 Merge branch 'origin/develop' into Weblate. 2020-03-24 14:54:59 +00:00
roket1428
b41d318e62 Translated using Weblate (Turkish)
Currently translated at 96.0% (24 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2020-03-24 14:54:59 +00:00
random
97243e9c59 Translated using Weblate (Italian)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/
2020-03-24 14:54:58 +00:00
Nathan Follens
3aee541cb9 Translated using Weblate (Dutch)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nl/
2020-03-24 14:54:58 +00:00
Travis Ralston
da455c2a14 Merge pull request #12836 from vector-im/travis/jitsi-wrapper
Remove useless app preloading from Jitsi widget wrapper
2020-03-24 08:54:52 -06:00
Wilco Baan Hofman
679331323a Translated using Weblate (Dutch)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nl/
2020-03-24 09:00:37 +00:00
Travis Ralston
350a52b44e Remove useless app preloading from Jitsi widget wrapper
We should always have conference information, and if we don't then the widget is invalid.
2020-03-23 10:38:10 -06:00
Michael Telatynski
0620da4351 Add webpack stats which will be used by CI and stored to artifacts
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-23 12:07:26 +00:00
David Baker
c4bece1fd5 Merge pull request #12829 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2020-03-23 10:07:32 +00:00
Tentarial
080076e3e4 Translated using Weblate (German)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2020-03-23 09:55:16 +00:00
Kévin C
f4ef7ba7e1 Translated using Weblate (French)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fr/
2020-03-23 09:55:16 +00:00
Jeff Huang
ffb7126582 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hant/
2020-03-23 09:55:16 +00:00
Slavi Pantaleev
e22ade38f9 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/bg/
2020-03-23 09:55:16 +00:00
Osoitz
ae9c02b456 Translated using Weblate (Basque)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eu/
2020-03-23 09:55:15 +00:00
Weblate
9539c14f2f Merge branch 'origin/develop' into Weblate. 2020-03-20 11:53:08 +00:00
Besnik Bleta
a560d3586a Translated using Weblate (Albanian)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/sq/
2020-03-20 11:53:08 +00:00
J. Ryan Stinnett
ffd155a6aa Merge pull request #12799 from vector-im/jryans/docker-version-release
Fix version for Docker builds
2020-03-20 11:53:02 +00:00
Weblate
fbf4437159 Merge branch 'origin/develop' into Weblate. 2020-03-20 10:45:16 +00:00
Michael Telatynski
f5ac675379 Merge pull request #12800 from vector-im/t3chguy/shortcuts2
Register Mac electron specific Cmd+, shortcut to User Settings
2020-03-20 10:45:07 +00:00
Michael Telatynski
3d266cb237 Register Mac electron specific Cmd+, shortcut to User Settings
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-19 23:42:10 +00:00
J. Ryan Stinnett
4afe7a73c4 Fix version for Docker builds
This (should) fix the version script for Docker builds by testing the branch
with a regex instead of single char glob.

Fixes https://github.com/vector-im/riot-web/issues/12777
2020-03-19 21:00:37 +00:00
Weblate
f377dfcad4 Merge branch 'origin/develop' into Weblate. 2020-03-19 17:52:28 +00:00
Travis Ralston
775e1fc4ae Merge pull request #12780 from vector-im/travis/wrapped-jitsi
Use a local widget wrapper for Jitsi calls
2020-03-19 11:52:22 -06:00
Travis Ralston
09e26d0882 Misc case changes, comment updates 2020-03-19 11:47:43 -06:00
Weblate
acfeee3258 Merge branch 'origin/develop' into Weblate. 2020-03-19 11:01:28 +00:00
Michael Telatynski
2b751d2ca6 Merge pull request #12786 from vector-im/t3chguy/patch-2
Delete shortcuts.md
2020-03-19 11:01:22 +00:00
Michael Telatynski
9055d0b8b5 Delete shortcuts.md
The in-app keyboard shortcuts view has more.
https://github.com/matrix-org/matrix-react-sdk/pull/4231
2020-03-19 10:52:48 +00:00
Travis Ralston
e1eb16ce46 Use a local widget wrapper for Jitsi calls
Effectively fixes https://github.com/vector-im/riot-web/issues/11074
Effectively fixes https://github.com/vector-im/riot-web/issues/7112
Fixes https://github.com/vector-im/riot-web/issues/6930
Fixes Jitsi widgets not working for guests (https://github.com/vector-im/riot-web/issues/8933)
Fixes https://github.com/vector-im/riot-web/issues/5048

Previously we were relying on an integration manager to be defined, functional, and alive in order to join Jitsi calls. This commit changes this so we aren't reliant on an integration manager for Jitsi calls at all, and gives people the option of choosing a Jitsi server via the config.json.

This side is just the wrapper/shell: the logic is mostly in the react-sdk (to be linked via PRs). This layer simply has an HTML file exported that can be used to render a Jitsi widget, and the react-sdk constructs a URL to access it locally. This is similar to how the mobile apps handle Jitsi widgets: instead of iframing the widget URL directly into the app, they pull apart the widget information and natively render it. We're effectively doing the same here by parsing the widget options and using our local wrapper instead of whatever happens to be defined in the widget state event.

Integration managers should still continue to offer a widget URL for Jitsi widgets as this is what the spec requires.

A large part of this is based upon Dimension's handling of Jitsi and widgets in general: a license has been granted to allow Riot (and therefore the react-sdk) to use the code and be inspired by it.
2020-03-18 15:48:02 -06:00
Weblate
6b959b4a76 Merge branch 'origin/develop' into Weblate. 2020-03-18 14:04:05 +00:00
Michael Telatynski
7296b704a8 Merge pull request #12756 from vector-im/t3chguy/gemini
Remove remainders of gemini-scrollbar and react-gemini-scrollbar
2020-03-18 14:03:59 +00:00
Weblate
f02a74a449 Merge branch 'origin/develop' into Weblate. 2020-03-18 11:43:43 +00:00
Elwyn Malethan
3a8a5febe9 Translated using Weblate (Welsh)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/cy/
2020-03-18 11:43:42 +00:00
Pedro Silva
a0fbae0971 Translated using Weblate (Portuguese)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pt/
2020-03-18 11:43:42 +00:00
J. Ryan Stinnett
3b8a34917f Merge pull request #12762 from jaredsmith/patch-1
Update electron to v7.1.14
2020-03-18 11:43:37 +00:00
J. Ryan Stinnett
5808ea2ba1 Add notes about chatting with the team 2020-03-18 11:18:29 +00:00
J. Ryan Stinnett
e348546e59 Reformat 2020-03-18 10:59:46 +00:00
J. Ryan Stinnett
34f3671c09 Add notes on review request handling 2020-03-18 10:59:33 +00:00
J. Ryan Stinnett
3989f41985 Clarify merge options 2020-03-18 10:53:48 +00:00
J. Ryan Stinnett
bd8b3a9046 Move multi-repo linking to workflow section 2020-03-18 10:21:28 +00:00
J. Ryan Stinnett
1aecc3d7e5 Add multi-repo PR linking
Co-Authored-By: Travis Ralston <travpc@gmail.com>
2020-03-18 10:18:41 +00:00
Alexis
a366c68c38 Translated using Weblate (Portuguese)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pt/
2020-03-17 23:32:14 +00:00
Pedro Silva
93059366ab Translated using Weblate (Portuguese)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pt/
2020-03-17 23:32:14 +00:00
Jared Smith
df9069090f Update electron to v7.1.14
Update dependency to electron version 7.1.4 to resolve issue where riot-web
has troubles syncing messages, and throws a "**CRASHING**:seccomp-bpf
failure in syscall 0230" error.  

See https://github.com/electron/electron/issues/22291 for more details.
2020-03-17 10:51:39 -04:00
Weblate
77c5d55d38 Merge branch 'origin/develop' into Weblate. 2020-03-17 14:39:19 +00:00
RiotRobot
a9fbf2f968 Reset matrix-react-sdk back to develop branch 2020-03-17 14:39:09 +00:00
RiotRobot
25a3449ad2 Reset matrix-js-sdk back to develop branch 2020-03-17 14:38:58 +00:00
Weblate
96c7765f5a Merge branch 'origin/develop' into Weblate. 2020-03-17 14:37:53 +00:00
RiotRobot
b01c6e67fd Merge branch 'master' into develop 2020-03-17 14:37:28 +00:00
Weblate
6854f2d7e8 Merge branch 'origin/develop' into Weblate. 2020-03-17 11:16:54 +00:00
Michael Telatynski
5913e3830b Merge pull request #12735 from vector-im/t3chguy/url
Add url tests to Modernizr
2020-03-17 11:16:48 +00:00
Michael Telatynski
368d26af34 update yarn lock a little more forcibly
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-17 10:36:26 +00:00
Weblate
ebf4e03019 Merge branch 'origin/develop' into Weblate. 2020-03-17 10:32:39 +00:00
catborise
3e94b7d911 Translated using Weblate (Turkish)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2020-03-17 10:32:39 +00:00
Mejans
1fda6eb5ab Translated using Weblate (Occitan)
Currently translated at 83.3% (20 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/oc/
2020-03-17 10:32:39 +00:00
Michael Telatynski
8cef591c57 Remove remainders of gemini-scrollbar and react-gemini-scrollbar
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-17 10:31:46 +00:00
Damir Jelić
31faa4753c Merge branch 'poljar/delete-events' into develop 2020-03-17 10:17:21 +01:00
Mejans
fe27939394 Added translation using Weblate (Occitan) 2020-03-16 20:06:50 +00:00
Travis Ralston
4155973b8a Merge pull request #12744 from vector-im/dependabot/npm_and_yarn/electron_app/minimist-1.2.2
Bump minimist from 1.2.0 to 1.2.2 in /electron_app
2020-03-16 09:55:42 -06:00
dependabot[bot]
5949c432fa Bump minimist from 1.2.0 to 1.2.2 in /electron_app
Bumps [minimist](https://github.com/substack/minimist) from 1.2.0 to 1.2.2.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.0...1.2.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-03-16 04:12:25 +00:00
Michael Telatynski
eba63ce9ab Add url tests to Modernizr
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-14 00:13:47 +00:00
J. Ryan Stinnett
0b772ca50a Tweak issue assigning
Co-Authored-By: Travis Ralston <travpc@gmail.com>
2020-03-13 16:48:03 +00:00
J. Ryan Stinnett
d930d14735 Add review policy doc
This documents various attributes of our overall review policy from code,
design, and product perspectives.

Fixes https://github.com/vector-im/riot-web/issues/12614
2020-03-13 16:39:29 +00:00
Travis Ralston
8e2eab21ae Merge pull request #12731 from vector-im/travis/theme-poc
Add docs and flag for custom theme support
2020-03-13 09:48:03 -06:00
Travis Ralston
98bd951366 Add docs and flag for custom theme support 2020-03-13 09:34:16 -06:00
Travis Ralston
7c8363c85e Merge pull request #12716 from vector-im/travis/ts-2
Declare jsx in tsconfig for IDEs
2020-03-13 09:25:16 -06:00
Travis Ralston
b419afad40 Declare jsx in tsconfig for IDEs 2020-03-12 13:37:28 -06:00
Travis Ralston
139bf536e4 Merge pull request #12713 from vector-im/travis/yarn-cleanup
Remove stuff that yarn install doesn't think we need
2020-03-12 10:58:28 -06:00
Travis Ralston
e110c8ed9b Remove stuff that yarn install doesn't think we need 2020-03-12 10:47:34 -06:00
Damir Jelić
20a89d67cb ElectronPlatform: Add support to remove events from the event index. 2020-03-12 11:51:34 +01:00
David Baker
ce9a964956 Merge pull request #12691 from vector-im/dbkr/yarn_upgrade_20200311
yarn upgrade
2020-03-12 09:45:45 +00:00
Travis Ralston
296e7011e5 Merge pull request #12696 from vector-im/travis/typescript-2
Support TypeScript for React components
2020-03-11 18:36:41 -06:00
Travis Ralston
798d4dabc0 Supply --jsx react to tsc 2020-03-11 18:25:19 -06:00
Travis Ralston
f44694ad44 Support TypeScript for React components
Same treatment as https://github.com/matrix-org/matrix-react-sdk/pull/4203
2020-03-11 18:19:03 -06:00
David Baker
e18157d5a0 yarn upgrade 2020-03-11 14:56:13 +00:00
47 changed files with 1059 additions and 585 deletions

1
.gitignore vendored
View File

@@ -21,3 +21,4 @@ electron/pub
/config.local*.json
/src/component-index.js
/.tmp
/webpack-stats.json

View File

@@ -25,6 +25,9 @@
"test/svg/asimg",
"test/svg/filters",
"test/url/parser",
"test/url/urlsearchparams",
"test/cors",
"test/iframe/sandbox",
"test/json",

View File

@@ -1,3 +1,61 @@
Changes in [1.5.14](https://github.com/vector-im/riot-web/releases/tag/v1.5.14) (2020-03-30)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.14-rc.1...v1.5.14)
* Upgrade JS SDK to 5.2.0 and React SDK to 2.3.0
Changes in [1.5.14-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.5.14-rc.1) (2020-03-26)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.13...v1.5.14-rc.1)
* Upgrade JS SDK to 5.2.0-rc.1 and React SDK to 2.3.0-rc.1
* Update from Weblate
[\#12890](https://github.com/vector-im/riot-web/pull/12890)
* App load tweaks
[\#12869](https://github.com/vector-im/riot-web/pull/12869)
* Add review policy doc
[\#12730](https://github.com/vector-im/riot-web/pull/12730)
* Fix artifact searching in redeployer
[\#12875](https://github.com/vector-im/riot-web/pull/12875)
* Fix Jitsi wrapper being large by getting the config from elsewhere
[\#12845](https://github.com/vector-im/riot-web/pull/12845)
* Add webpack stats which will be used by CI and stored to artifacts
[\#12832](https://github.com/vector-im/riot-web/pull/12832)
* Revert "Remove useless app preloading from Jitsi widget wrapper"
[\#12842](https://github.com/vector-im/riot-web/pull/12842)
* Remove useless app preloading from Jitsi widget wrapper
[\#12836](https://github.com/vector-im/riot-web/pull/12836)
* Update from Weblate
[\#12829](https://github.com/vector-im/riot-web/pull/12829)
* Fix version for Docker builds
[\#12799](https://github.com/vector-im/riot-web/pull/12799)
* Register Mac electron specific Cmd+, shortcut to User Settings
[\#12800](https://github.com/vector-im/riot-web/pull/12800)
* Use a local widget wrapper for Jitsi calls
[\#12780](https://github.com/vector-im/riot-web/pull/12780)
* Delete shortcuts.md
[\#12786](https://github.com/vector-im/riot-web/pull/12786)
* Remove remainders of gemini-scrollbar and react-gemini-scrollbar
[\#12756](https://github.com/vector-im/riot-web/pull/12756)
* Update electron to v7.1.14
[\#12762](https://github.com/vector-im/riot-web/pull/12762)
* Add url tests to Modernizr
[\#12735](https://github.com/vector-im/riot-web/pull/12735)
* ElectronPlatform: Add support to remove events from the event index.
[\#12703](https://github.com/vector-im/riot-web/pull/12703)
* Bump minimist from 1.2.0 to 1.2.2 in /electron_app
[\#12744](https://github.com/vector-im/riot-web/pull/12744)
* Add docs and flag for custom theme support
[\#12731](https://github.com/vector-im/riot-web/pull/12731)
* Declare jsx in tsconfig for IDEs
[\#12716](https://github.com/vector-im/riot-web/pull/12716)
* Remove stuff that yarn install doesn't think we need
[\#12713](https://github.com/vector-im/riot-web/pull/12713)
* yarn upgrade
[\#12691](https://github.com/vector-im/riot-web/pull/12691)
* Support TypeScript for React components
[\#12696](https://github.com/vector-im/riot-web/pull/12696)
Changes in [1.5.13](https://github.com/vector-im/riot-web/releases/tag/v1.5.13) (2020-03-17)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.13-rc.1...v1.5.13)

View File

@@ -223,6 +223,11 @@ Before attempting to develop on Riot you **must** read the [developer guide
for `matrix-react-sdk`](https://github.com/matrix-org/matrix-react-sdk), which
also defines the design, architecture and style for Riot too.
Before starting work on a feature, it's best to ensure your plan aligns well
with our vision for Riot. Please chat with the team in
[#riot-dev:matrix.org](https://matrix.to/#/#riot-dev:matrix.org) before you
start so we can ensure it's something we'd be willing to merge.
You should also familiarise yourself with the ["Here be Dragons" guide
](https://docs.google.com/document/d/12jYzvkidrp1h7liEuLIe6BMdU0NUjndUYI971O06ooM)
to the tame & not-so-tame dragons (gotchas) which exist in the codebase.

View File

@@ -22,7 +22,6 @@
"https://scalar-staging.vector.im/api",
"https://scalar-staging.riot.im/scalar/api"
],
"integrations_jitsi_widget_url": "https://scalar.vector.im/api/widgets/jitsi.html",
"bug_report_endpoint_url": "https://riot.im/bugreports/submit",
"defaultCountryCode": "GB",
"showLabsSettings": false,
@@ -52,5 +51,9 @@
},
"settingDefaults": {
"breadcrumbs": true
},
"jitsi": {
"preferredDomain": "jitsi.riot.im",
"externalApiUrl": "https://jitsi.riot.im/libs/external_api.min.js"
}
}

View File

@@ -84,6 +84,13 @@ For a good example, see https://riot.im/develop/config.json.
By default, this is "https://matrix.to" to generate matrix.to (spec) permalinks.
Set this to your Riot instance URL if you run an unfederated server (eg:
"https://riot.example.org").
1. `jitsi`: Used to change the default conference options.
1. `preferredDomain`: The domain name of the preferred Jitsi instance. Defaults
to `jitsi.riot.im`. This is used whenever a user clicks on the voice/video
call buttons - integration managers may use a different domain.
1. `externalApiUrl`: The URL to the Jitsi Meet API script. This is required
for showing any Jitsi widgets, no matter the source. Defaults to
`https://jitsi.riot.im/libs/external_api.min.js`.
Note that `index.html` also has an og:image meta tag that is set to an image
hosted on riot.im. This is the image used if links to your copy of Riot

View File

@@ -98,3 +98,12 @@ person is online.
This adds padlocks to room list tiles and room header for invite only rooms.
This feature flag (unlike most) is enabled by default.
## Custom themes (`feature_custom_themes`)
Custom themes are possible through Riot's [theme support](./theming.md), though
normally these themes need to be defined in the config for Riot. This labs flag
adds an ability for end users to add themes themselves by using a URL to the JSON
theme definition.
For some sample themes, check out [aaronraimist/riot-web-themes](https://github.com/aaronraimist/riot-web-themes).

82
docs/review.md Normal file
View File

@@ -0,0 +1,82 @@
# Review Guidelines
The following summarises review guidelines that we follow for pull requests in
Riot Web and other supporting repos. These are just guidelines (not strict
rules) and may be updated over time.
## Code Review
When reviewing code, here are some things we look for and also things we avoid:
### We review for
* Correctness
* Performance
* Accessibility
* Security
* Comments and documentation where needed
* Sharing knowledge of different areas among the team
* Ensuring it's something we're comfortable maintaining for the long term
* Progress indicators and local echo where appropriate with network activity
### We should avoid
* Style nits that are already handled by the linter
* Dramatically increasing scope
### Good practices
* Use empathetic language
* See also [Mindful Communication in Code
Reviews](https://kickstarter.engineering/a-guide-to-mindful-communication-in-code-reviews-48aab5282e5e)
and [How to Do Code Reviews Like a Human](https://mtlynch.io/human-code-reviews-1/)
* Authors should prefer smaller commits for easier reviewing and bisection
* Reviewers should be explicit about required versus optional changes
* Reviews are conversations and the PR author should feel comfortable
discussing and pushing back on changes before making them
* Core team should lead by example through their tone and language
* Take the time to thank and point out good code changes
* Using softer language like "please" and "what do you think?" goes a long way
towards making others feel like colleagues working towards a common goal
### Workflow
* Authors should request review from riot-web team by default (if someone on the
team is clearly the expert in an area, a direct review request to them may be
more appropriate)
* Reviewers should remove the team review request and request review from
themselves when starting a review to avoid double review
* Authors should link to other layers of their PR in their PR before requesting
review. Reviewers might be coming from different places and could miss other
required PRs.
* Avoid force pushing to a PR after first round of review
* Use the GitHub default of merge commits when landing (avoid alternate options
like squash or rebase)
* PR author merges after review (assuming they have write access)
* Assign issues only when in progress to indicate to others what can be picked
up
## Design and Product Review
We want to ensure that all changes to Riot fit with our design and product
vision. We often request review from those teams so they can provide their
perspective.
In more detail, our usual process for changes that affect the UI or alter user
functionality is:
* For changes that will go live when merged, always flag Design and Product
teams as appropriate
* For changes guarded by a feature flag, Design and Product review is not
required (though may still be useful) since we can continue tweaking
As it can be difficult to review design work from looking at just the changed
files in a PR, authors should be prepared for Design and / or Product teams to
request a link to an ad-hoc build of Riot (hosted anywhere) that can be used for
the review. In the future, we [hope to automate
this](https://github.com/vector-im/riot-web/issues/12624) for every PR.
Before starting work on a feature, it's best to ensure your plan aligns well
with our vision for Riot. Please chat with the team in
[#riot-dev:matrix.org](https://matrix.to/#/#riot-dev:matrix.org) before you
start so we can ensure it's something we'd be willing to merge.

View File

@@ -1,15 +0,0 @@
# Keyboard Shortcuts
The modifier is <kbd>Ctrl</kbd> on Windows & Linux and <kbd>⌘</kbd> on Mac.
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>m</kbd> - toggle markdown
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>d</kbd> - toggle mic mute
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>e</kbd> - toggle video on/off
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>k</kbd> - jump to named room
- <kbd>↑</kbd>/<kbd>↓</kbd> - navigate old messages to edit when the composer is in focus
- <kbd>↑</kbd>/<kbd>↓</kbd> - next/prev room when focus in room list
- <kbd>Alt</kbd>+<kbd>↑</kbd>/<kbd>↓</kbd> - resend previous messages when the composer is in focus
- <kbd>PageUp</kbd>/<kbd>PageDown</kbd> - scroll timeline up/down
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>Home</kbd>/<kbd>End</kbd> - jump to
start/end of the composer when focused, otherwise jump to timeline start/end
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>`</kbd> - toggle the top left menu

View File

@@ -2,7 +2,7 @@
"name": "riot-web",
"productName": "Riot",
"main": "src/electron-main.js",
"version": "1.5.13",
"version": "1.5.14",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"dependencies": {

View File

@@ -40,6 +40,11 @@ const template = [
{ role: 'zoomin', accelerator: 'CommandOrControl+=' },
{ role: 'zoomout' },
{ type: 'separator' },
{
label: 'Preferences',
accelerator: 'Command+,', // Mac-only accelerator
click() { global.mainWindow.webContents.send('preferences'); },
},
{ role: 'togglefullscreen' },
{ role: 'toggledevtools' },
],

View File

@@ -500,9 +500,9 @@ minimist@0.0.8:
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
version "1.2.2"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.2.tgz#b00a00230a1108c48c169e69a291aafda3aacd63"
integrity sha512-rIqbOrKb8GJmx/5bc2M0QchhUouMXSpd1RTclXsB41JdL+VtnojfaJR+h7F9k18/4kHUsBFgk80Uk+q569vjPA==
mkdirp@0.5.1, mkdirp@^0.5.1:
version "0.5.1"

View File

@@ -2,7 +2,7 @@
"name": "riot-web",
"productName": "Riot",
"main": "electron_app/src/electron-main.js",
"version": "1.5.13",
"version": "1.5.14",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"repository": {
@@ -37,16 +37,18 @@
"reskindex:watch-react": "node scripts/yarn-sub.js matrix-react-sdk reskindex:watch",
"clean": "rimraf lib webapp electron_app/dist",
"build": "yarn clean && yarn build:genfiles && yarn build:compile && yarn build:types && yarn build:bundle",
"build-stats": "yarn clean && yarn build:genfiles && yarn build:compile && yarn build:types && yarn build:bundle-stats",
"build:res": "node scripts/copy-res.js",
"build:genfiles": "yarn reskindex && yarn build:res",
"build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js",
"build:compile": "babel -d lib --verbose --extensions \".ts,.js\" src",
"build:compile": "babel -d lib --verbose --extensions \".ts,.js,.tsx\" src",
"build:bundle": "cross-env NODE_ENV=production webpack -p --progress --bail --mode production",
"build:bundle-stats": "cross-env NODE_ENV=production webpack -p --progress --bail --mode production --json > webpack-stats.json",
"build:electron": "yarn build && yarn install:electron && electron-builder -wml --ia32 --x64",
"build:electron:linux": "yarn build && electron-builder -l --x64",
"build:electron:macos": "yarn build && electron-builder -m --x64",
"build:electron:windows": "yarn build && electron-builder -w --ia32 --x64",
"build:types": "tsc --emitDeclarationOnly",
"build:types": "tsc --emitDeclarationOnly --jsx react",
"install:electron": "electron-builder install-app-deps",
"dist": "scripts/package.sh",
"start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n reskindex,reskindex-react,res,riot-js \"yarn reskindex:watch\" \"yarn reskindex:watch-react\" \"yarn start:res\" \"yarn start:js\"",
@@ -56,18 +58,17 @@
"lint": "yarn lint:types && yarn lint:ts && yarn lint:js && yarn lint:style",
"lint:js": "eslint src",
"lint:ts": "echo 'We don't actually have a typescript linter at this layer because tslint is being removed from our stack. Presumably your TS is fine.'",
"lint:types": "tsc --noEmit",
"lint:types": "tsc --noEmit --jsx react",
"lint:style": "stylelint 'res/css/**/*.scss'",
"test": "jest"
},
"dependencies": {
"browser-request": "^0.3.3",
"favico.js": "^0.3.10",
"gemini-scrollbar": "github:matrix-org/gemini-scrollbar#91e1e566",
"gfm.css": "^1.1.2",
"highlight.js": "^9.13.1",
"matrix-js-sdk": "5.1.1",
"matrix-react-sdk": "2.2.3",
"matrix-js-sdk": "5.2.0",
"matrix-react-sdk": "2.3.0",
"olm": "https://packages.matrix.org/npm/olm/olm-3.1.4.tgz",
"postcss-easings": "^2.0.0",
"prop-types": "^15.7.2",
@@ -94,7 +95,7 @@
"@babel/preset-typescript": "^7.7.4",
"@babel/register": "^7.7.4",
"@babel/runtime": "^7.7.6",
"@types/react": "^16.9.17",
"@types/react": "16.9",
"@types/react-dom": "^16.9.4",
"autoprefixer": "^9.7.3",
"babel-eslint": "^10.0.3",
@@ -153,7 +154,7 @@
},
"build": {
"appId": "im.riot.app",
"electronVersion": "7.1.12",
"electronVersion": "7.1.14",
"files": [
"node_modules/**",
"src/**"

View File

@@ -24,7 +24,8 @@
"feature_invite_only_padlocks": "enable",
"feature_event_indexing": "disable",
"feature_bridge_state": "labs",
"feature_presence_in_room_list": "labs"
"feature_presence_in_room_list": "labs",
"feature_custom_themes": "labs"
},
"welcomeUserId": "@riot-bot:matrix.org",
"piwik": {

View File

@@ -11,7 +11,7 @@ DIST_VERSION=$TAG
# a few SHAs rather than a version.
# Docker Hub doesn't always check out the tag and sometimes checks out the branch, so we should look
# for an appropriately tagged branch as well (heads/v1.2.3).
if [[ $BRANCH != 'HEAD' && $BRANCH != 'heads/v*' ]]
if [[ $BRANCH != HEAD && ! $BRANCH =~ heads/v.+ ]]
then
REACT_SHA=$(cd node_modules/matrix-react-sdk; git rev-parse --short=12 HEAD)
JSSDK_SHA=$(cd node_modules/matrix-js-sdk; git rev-parse --short=12 HEAD)

View File

@@ -133,9 +133,9 @@ def on_receive_buildkite_poke():
for artifact in artifacts_array:
if re.match(r"dist/.*.tar.gz", artifact['path']):
artifact_to_deploy = artifact
if artifact_to_deploy is None:
print("No suitable artifacts found")
return jsonify({})
if artifact_to_deploy is None:
print("No suitable artifacts found")
return jsonify({})
# double paranoia check: make sure the artifact is on the right org too
if required_api_prefix is not None and not artifact_to_deploy['url'].startswith(required_api_prefix):

22
src/@types/global.d.ts vendored Normal file
View File

@@ -0,0 +1,22 @@
/*
Copyright 2020 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
interface Window {
Olm: {
init: () => Promise<void>;
};
mxSendRageshake: (text: string, withLogs?: boolean) => void;
}

View File

@@ -21,5 +21,7 @@
"Your Riot is misconfigured": "Riot не е конфигуриран правилно",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot конфигурацията ви съдържа невалиден JSON. Коригирайте проблема и презаредете страницата.",
"The message from the parser is: %(message)s": "Грешката от парсъра е: %(message)s",
"Invalid JSON": "Невалиден JSON"
"Invalid JSON": "Невалиден JSON",
"Open user settings": "Отвори потребителските настройки",
"Go to your browser to complete Sign In": "Отидете в браузъра за да завършите влизането"
}

View File

@@ -21,5 +21,6 @@
"Need help?": "Angen cymorth?",
"Chat with Riot Bot": "Sgwrsio gyda Riot Bot",
"Explore rooms": "Archwilio Ystafelloedd",
"Room Directory": "Cyfeiriadur Ystafelloedd"
"Room Directory": "Cyfeiriadur Ystafelloedd",
"Go to your browser to complete Sign In": "Ewch i'ch porwr i gwblhau Mewngofnodi"
}

View File

@@ -22,5 +22,6 @@
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Deine Riot Konfiguration enthält ungültiges JSON. Bitte korrigiere das Problem und lade die Seite neu.",
"The message from the parser is: %(message)s": "Die Nachricht des Parsers ist: %(message)s",
"Invalid JSON": "Ungültiges JSON",
"Go to your browser to complete Sign In": "Gehe zu deinem Browser, um die Anmeldung abzuschließen"
"Go to your browser to complete Sign In": "Gehe zu deinem Browser, um die Anmeldung abzuschließen",
"Open user settings": "Öffne Nutzer-Einstellungen"
}

View File

@@ -6,6 +6,7 @@
"Unexpected error preparing the app. See console for details.": "Unexpected error preparing the app. See console for details.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.",
"Invalid configuration: no default server specified.": "Invalid configuration: no default server specified.",
"Open user settings": "Open user settings",
"Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s",
"Go to your browser to complete Sign In": "Go to your browser to complete Sign In",
"Unknown device": "Unknown device",

View File

@@ -22,5 +22,6 @@
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Viaj Riot-agordoj enhavas nevalidan JSON-on. Bonvolu korekti la problemon kaj reŝarĝi la paĝon.",
"The message from the parser is: %(message)s": "La mesaĝo el la analizilo estas: %(message)s",
"Invalid JSON": "Nevalida JSON",
"Go to your browser to complete Sign In": "Iru al via foliumilo por fini la saluton"
"Go to your browser to complete Sign In": "Iru al via foliumilo por fini la saluton",
"Open user settings": "Malfermi agordojn de uzanto"
}

View File

@@ -22,5 +22,6 @@
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Zure Riot konfigurazioak baliogabeko JSON kodea du. Zuzendu arazoa eta kargatu orria berriro.",
"The message from the parser is: %(message)s": "Prozesatzailearen mezua hau da: %(message)s",
"Invalid JSON": "JSON baliogabea",
"Go to your browser to complete Sign In": "Joan zure nabigatzailera izena ematen bukatzeko"
"Go to your browser to complete Sign In": "Joan zure nabigatzailera izena ematen bukatzeko",
"Open user settings": "Ireki erabiltzailearen ezarpenak"
}

View File

@@ -22,5 +22,6 @@
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Votre configuration de Riot contient du JSON non valide. Corrigez ce problème et rechargez la page.",
"The message from the parser is: %(message)s": "Le message de lanalyseur est : %(message)s",
"Invalid JSON": "JSON non valide",
"Go to your browser to complete Sign In": "Utilisez votre navigateur pour terminer la connexion"
"Go to your browser to complete Sign In": "Utilisez votre navigateur pour terminer la connexion",
"Open user settings": "Ouvrir les paramètres utilisateur"
}

View File

@@ -22,5 +22,6 @@
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "A Riot beállításod érvénytelen JSON szöveget tartalmaz. Kérlek javítsd és töltsd újra az oldalt.",
"The message from the parser is: %(message)s": "A feldolgozó algoritmus üzenete: %(message)s",
"Invalid JSON": "Érvénytelen JSON",
"Go to your browser to complete Sign In": "A böngészőben fejezd be a bejelentkezést"
"Go to your browser to complete Sign In": "A böngészőben fejezd be a bejelentkezést",
"Open user settings": "Felhasználói beállítások megnyitása"
}

View File

@@ -22,5 +22,6 @@
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "La tua configurazione di Riot contiene un JSON non valido. Correggi il problema e ricarica la pagina.",
"The message from the parser is: %(message)s": "Il messaggio dal parser è: %(message)s",
"Invalid JSON": "JSON non valido",
"Go to your browser to complete Sign In": "Vai nel tuo browser per completare l'accesso"
"Go to your browser to complete Sign In": "Vai nel tuo browser per completare l'accesso",
"Open user settings": "Apri impostazioni utente"
}

View File

@@ -21,5 +21,7 @@
"Need help?": "Тусламж хэрэгтэй юу?",
"Chat with Riot Bot": "Риот боттой чатлах",
"Explore rooms": "Өрөөнүүд үзэх",
"Room Directory": "Өрөөний директор"
"Room Directory": "Өрөөний директор",
"Open user settings": "Хэрэглэгчийн тохиргоо нээх",
"Go to your browser to complete Sign In": "Бүрэн нэвтрэхийн тулд вэб хөтөч рүү шилжинэ үү"
}

View File

@@ -22,5 +22,6 @@
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Uw Riot-configuratie bevat ongeldige JSON. Corrigeer het probleem en herlaad de pagina.",
"The message from the parser is: %(message)s": "De ontleder meldt: %(message)s",
"Invalid JSON": "Ongeldige JSON",
"Go to your browser to complete Sign In": "Ga naar uw browser om de aanmelding te voltooien"
"Go to your browser to complete Sign In": "Ga naar uw browser om de aanmelding te voltooien",
"Open user settings": "Open de gebruikersinstellingen"
}

22
src/i18n/strings/oc.json Normal file
View File

@@ -0,0 +1,22 @@
{
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Vòstra configuracion Riot conten de JSON invalid. Mercés de corregir lo problèma e dactualizar la pagina.",
"The message from the parser is: %(message)s": "Lo messatge de lanalisaire es: %(message)s",
"Invalid JSON": "Invalid JSON",
"Your Riot is misconfigured": "Vòstre Riot es mal configurat",
"Unexpected error preparing the app. See console for details.": "Error inesperada en preparant laplicacion. Vejatz la consòla pels detalhs.",
"Riot Desktop on %(platformName)s": "Riot Desktop sus %(platformName)s",
"Go to your browser to complete Sign In": "Anatz al navegador per acabar la connexion",
"Unknown device": "Periferic desconegut",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s sus %(osName)s",
"powered by Matrix": "propulsat per Matrix",
"Custom Server Options": "Opcions de servidor personalizat",
"Dismiss": "Refusar",
"Welcome to Riot.im": "La benvenguda a Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Messatjariá chifrada, descentralizada e collaborativa propulsada per [matrix]",
"Sign In": "Se connectar",
"Create Account": "Crear un compte",
"Need help?": "Besonh dajuda?",
"Chat with Riot Bot": "Charrar amb lo robòt Riot",
"Explore rooms": "Percórrer las salas",
"Room Directory": "Annuari de las sala"
}

View File

@@ -1,25 +1,26 @@
{
"Custom Server Options": "Opções para Servidor Personalizado",
"Custom Server Options": "Opções do Servidor Personalizado",
"Dismiss": "Descartar",
"powered by Matrix": "rodando a partir do Matrix",
"powered by Matrix": "powered by Matrix",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s em %(osName)s",
"Riot Desktop on %(platformName)s": "Riot para computadores desktop em %(platformName)s",
"Riot Desktop on %(platformName)s": "Riot Desktop em %(platformName)s",
"Unknown device": "Dispositivo desconhecido",
"You need to be using HTTPS to place a screen-sharing call.": "Necessita de estar a usar HTTPS para poder iniciar uma chamada com partilha de ecrã.",
"Welcome to Riot.im": "Bem-vindo ao Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat descentralizado, encriptado &amp; colaborativo alimentado por [matrix]",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat descentralizado, encriptado &amp; colaborativo powered by [matrix]",
"Chat with Riot Bot": "Falar com o Bot do Riot",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "A sua configuração do RIOT contém JSON inválido. Por favor corriga o erro e recarregue a página.",
"The message from the parser is: %(message)s": "A mensagem do analisador é: %(message)s",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "A sua configuração do Riot contém JSON inválido. Por favor corrija o erro e recarregue a página.",
"The message from the parser is: %(message)s": "A mensagem do parser é: %(message)s",
"Invalid JSON": "JSON inválido",
"Your Riot is misconfigured": "A sua configuração do RIOT está incorrecta.",
"Your Riot is misconfigured": "Existe um erro na configuração do Riot",
"Unexpected error preparing the app. See console for details.": "Erro inesperado na preparação da aplicação. Veja a consola para mais detalhes.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuração inválida: só pode especificar uma das default_server_config, default_server_name,\nor default_hs_url.",
"Invalid configuration: no default server specified.": "Configuração inválida: não existe especificação de servidor padrão.",
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Pode usar as opções de custom server, para iniciar sessão noutros servidores Matrix.org, especificando o URL do homeserver diferente. Isto autoriza-lo-á a usar RIOT com a sua conta Matrix num servidor diferente",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuração inválida: só pode especificar uma das default_server_config, default_server_name, ou default_hs_url.",
"Invalid configuration: no default server specified.": "Configuração inválida: servidor padrão não especificado.",
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Pode usar as opções de servidor personalizado, para iniciar sessão noutros servidores Matrix, especificando o URL do homeserver diferente. Isto autoriza-lo-á a usar Riot com a sua conta Matrix num servidor diferente.",
"Sign In": "Iniciar sessão",
"Create Account": "Criar conta",
"Need help?": "Ajuda?",
"Explore rooms": "Explorar rooms",
"Room Directory": "Diretório de rooms"
"Room Directory": "Diretório de rooms",
"Go to your browser to complete Sign In": "Abra o seu navegador para completar o inicio de sessão"
}

View File

@@ -22,5 +22,6 @@
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Formësimi juaj i Riot-it përmban JSON. Ju lutemi, ndreqeni problemin dhe ringarkoni faqen.",
"The message from the parser is: %(message)s": "Mesazhi prej procesit është: %(message)s",
"Invalid JSON": "JSON i pavlefshëm",
"Go to your browser to complete Sign In": "Që të plotësoni Hyrjen, kaloni te shfletuesi juaj"
"Go to your browser to complete Sign In": "Që të plotësoni Hyrjen, kaloni te shfletuesi juaj",
"Open user settings": "Hapni rregullime përdoruesi"
}

View File

@@ -2,7 +2,7 @@
"%(appName)s via %(browserName)s on %(osName)s": "%(osName)s işletim sisteminde %(browserName)s ile %(appName)s",
"Custom Server Options": "Özelleştirilebilir Sunucu Seçenekleri",
"Dismiss": "Kapat",
"powered by Matrix": "Matrix tarafından destekleniyor",
"powered by Matrix": "Matrix'den besleniyor",
"Riot Desktop on %(platformName)s": "%(platformName)s platformunda Riot Masaüstü",
"Unknown device": "Bilinmeyen aygıt",
"You need to be using HTTPS to place a screen-sharing call.": "Ekran paylaşımlı arama yapmak için HTTPS kullanıyor olmalısınız.",
@@ -17,9 +17,11 @@
"Room Directory": "Oda Dizini",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot yapılandırmanız geçersiz JSON ifadesi içermektedir. Lütfen problemi düzeltin ve sayfayı yenileyin.",
"Invalid JSON": "Geçersiz JSON",
"Your Riot is misconfigured": "Rioutunuz hatalı yapılandırılmış",
"Unexpected error preparing the app. See console for details.": "Uygulamayı hazırlarken beklenmeyen hata oluştu. Lütfen detaylar için konsola bakınız.",
"Your Riot is misconfigured": "Riot hatalı ayarlanmış",
"Unexpected error preparing the app. See console for details.": "Uygulama hazırlanırken beklenmeyen bir hata oldu. Detaylar için konsola bakın.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Geçersiz yapılandırma: default_server_config, default_server_name, yada default_hs_url den sadece birisi seçilebilir.",
"Invalid configuration: no default server specified.": "Geçersiz yapılandırma: varsayılan sunucu seçilmemiş.",
"The message from the parser is: %(message)s": "Ayrıştırıcıdan gelen mesaj: %(message)s"
"The message from the parser is: %(message)s": "Ayrıştırıcıdan gelen mesaj: %(message)s",
"Go to your browser to complete Sign In": "Oturum açmayı tamamlamak için tarayıcınıza gidin",
"Open user settings": "Kullanıcı ayarlarını aç"
}

View File

@@ -22,5 +22,6 @@
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "您的 Riot 包含無效的 JSON。請修正問題並重新整理頁面。",
"The message from the parser is: %(message)s": "從解析器而來的訊息為:%(message)s",
"Invalid JSON": "無效的 JSON",
"Go to your browser to complete Sign In": "到您的瀏覽器完成登入"
"Go to your browser to complete Sign In": "到您的瀏覽器完成登入",
"Open user settings": "開啟使用者設定"
}

View File

@@ -18,8 +18,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import olmWasmPath from 'olm/olm.wasm';
import React from 'react';
// add React and ReactPerf to the global namespace, to make them easier to
// access via the console
@@ -29,7 +27,6 @@ import ReactDOM from 'react-dom';
import * as sdk from 'matrix-react-sdk';
import PlatformPeg from 'matrix-react-sdk/src/PlatformPeg';
import * as VectorConferenceHandler from 'matrix-react-sdk/src/VectorConferenceHandler';
import * as languageHandler from 'matrix-react-sdk/src/languageHandler';
import {_t, _td, newTranslatableError} from 'matrix-react-sdk/src/languageHandler';
import AutoDiscoveryUtils from 'matrix-react-sdk/src/utils/AutoDiscoveryUtils';
import {AutoDiscovery} from "matrix-js-sdk/src/autodiscovery";
@@ -39,17 +36,12 @@ import url from 'url';
import {parseQs, parseQsFromFragment} from './url_utils';
import ElectronPlatform from './platform/ElectronPlatform';
import WebPlatform from './platform/WebPlatform';
import {MatrixClientPeg} from 'matrix-react-sdk/src/MatrixClientPeg';
import SettingsStore from "matrix-react-sdk/src/settings/SettingsStore";
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
import {setTheme} from "matrix-react-sdk/src/theme";
import Olm from 'olm';
import CallHandler from 'matrix-react-sdk/src/CallHandler';
import {loadConfig, preparePlatform, loadLanguage, loadOlm} from "./init";
let lastLocationHashSet = null;
@@ -191,35 +183,11 @@ export async function loadApp() {
await loadOlm();
// set the platform for react sdk
if (window.ipcRenderer) {
console.log("Using Electron platform");
const plaf = new ElectronPlatform();
PlatformPeg.set(plaf);
} else {
console.log("Using Web platform");
PlatformPeg.set(new WebPlatform());
}
preparePlatform();
const platform = PlatformPeg.get();
let configJson;
let configError;
let configSyntaxError = false;
try {
configJson = await platform.getConfig();
} catch (e) {
configError = e;
if (e && e.err && e.err instanceof SyntaxError) {
console.error("SyntaxError loading config:", e);
configSyntaxError = true;
configJson = {}; // to prevent errors between here and loading CSS for the error box
}
}
// XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure
// granular settings are loaded correctly and to avoid duplicating the override logic for the theme.
SdkConfig.put(configJson);
// Load the config from the platform
const configError = await loadConfig();
// Load language after loading config.json so that settingsDefaults.language can be applied
await loadLanguage();
@@ -248,7 +216,7 @@ export async function loadApp() {
await setTheme();
// Now that we've loaded the theme (CSS), display the config syntax error if needed.
if (configSyntaxError) {
if (configError && configError.err && configError.err instanceof SyntaxError) {
const errorMessage = (
<div>
<p>
@@ -298,7 +266,7 @@ export async function loadApp() {
config={newConfig}
realQueryParams={params}
startingFragmentQueryParams={fragparts.params}
enableGuest={!configJson.disable_guests}
enableGuest={!SdkConfig.get().disable_guests}
onTokenLoginCompleted={onTokenLoginCompleted}
initialScreenAfterLogin={getScreenFromLocation(window.location)}
defaultDeviceDisplayName={platform.getDefaultDeviceDisplayName()}
@@ -334,62 +302,6 @@ export async function loadApp() {
}
}
function loadOlm() {
/* Load Olm. We try the WebAssembly version first, and then the legacy,
* asm.js version if that fails. For this reason we need to wait for this
* to finish before continuing to load the rest of the app. In future
* we could somehow pass a promise down to react-sdk and have it wait on
* that so olm can be loading in parallel with the rest of the app.
*
* We also need to tell the Olm js to look for its wasm file at the same
* level as index.html. It really should be in the same place as the js,
* ie. in the bundle directory, but as far as I can tell this is
* completely impossible with webpack. We do, however, use a hashed
* filename to avoid caching issues.
*/
return Olm.init({
locateFile: () => olmWasmPath,
}).then(() => {
console.log("Using WebAssembly Olm");
}).catch((e) => {
console.log("Failed to load Olm: trying legacy version", e);
return new Promise((resolve, reject) => {
const s = document.createElement('script');
s.src = 'olm_legacy.js'; // XXX: This should be cache-busted too
s.onload = resolve;
s.onerror = reject;
document.body.appendChild(s);
}).then(() => {
// Init window.Olm, ie. the one just loaded by the script tag,
// not 'Olm' which is still the failed wasm version.
return window.Olm.init();
}).then(() => {
console.log("Using legacy Olm");
}).catch((e) => {
console.log("Both WebAssembly and asm.js Olm failed!", e);
});
});
}
async function loadLanguage() {
const prefLang = SettingsStore.getValue("language", null, /*excludeDefault=*/true);
let langs = [];
if (!prefLang) {
languageHandler.getLanguagesFromBrowser().forEach((l) => {
langs.push(...languageHandler.getNormalizedLanguageKeys(l));
});
} else {
langs = [prefLang];
}
try {
await languageHandler.setLanguage(langs);
document.documentElement.setAttribute("lang", languageHandler.getCurrentLanguage());
} catch (e) {
console.error("Unable to set language", e);
}
}
async function verifyServerConfig() {
let validatedConfig;
try {

View File

@@ -1,5 +1,5 @@
/*
Copyright 2018 New Vector Ltd
Copyright 2018, 2020 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -18,22 +18,25 @@ import request from 'browser-request';
// Load the config file. First try to load up a domain-specific config of the
// form "config.$domain.json" and if that fails, fall back to config.json.
export async function getVectorConfig(relativeLocation) {
if (relativeLocation === undefined) relativeLocation = '';
export async function getVectorConfig(relativeLocation: string='') {
if (relativeLocation !== '' && !relativeLocation.endsWith('/')) relativeLocation += '/';
const specificConfigPromise = getConfig(`${relativeLocation}config.${document.domain}.json`);
const generalConfigPromise = getConfig(relativeLocation + "config.json");
try {
const configJson = await getConfig(`${relativeLocation}config.${document.domain}.json`);
const configJson = await specificConfigPromise;
// 404s succeed with an empty json config, so check that there are keys
if (Object.keys(configJson).length === 0) {
throw new Error(); // throw to enter the catch
}
return configJson;
} catch (e) {
return await getConfig(relativeLocation + "config.json");
return await generalConfigPromise;
}
}
function getConfig(configJsonFilename) {
function getConfig(configJsonFilename: string): Promise<{}> {
return new Promise(function(resolve, reject) {
request(
{ method: "GET", url: configJsonFilename, qs: { cachebuster: Date.now() } },

View File

@@ -21,7 +21,6 @@ limitations under the License.
// Require common CSS here; this will make webpack process it into bundle.css.
// Our own CSS (which is themed) is imported via separate webpack entry points
// in webpack.config.js
require('gemini-scrollbar/gemini-scrollbar.css');
require('gfm.css/gfm.css');
require('highlight.js/styles/github.css');

114
src/vector/init.ts Normal file
View File

@@ -0,0 +1,114 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Copyright 2018, 2019, 2020 New Vector Ltd
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// @ts-ignore
import olmWasmPath from "olm/olm.wasm";
import Olm from 'olm';
import * as languageHandler from 'matrix-react-sdk/src/languageHandler';
import SettingsStore from "matrix-react-sdk/src/settings/SettingsStore";
import ElectronPlatform from "./platform/ElectronPlatform";
import WebPlatform from "./platform/WebPlatform";
import PlatformPeg from 'matrix-react-sdk/src/PlatformPeg';
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
export function preparePlatform() {
if ((<any>window).ipcRenderer) {
console.log("Using Electron platform");
const plaf = new ElectronPlatform();
PlatformPeg.set(plaf);
} else {
console.log("Using Web platform");
PlatformPeg.set(new WebPlatform());
}
}
export async function loadConfig(): Promise<Error | void> {
const platform = PlatformPeg.get();
let configJson;
try {
configJson = await platform.getConfig();
} catch (e) {
return e;
} finally {
// XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure
// granular settings are loaded correctly and to avoid duplicating the override logic for the theme.
//
// Note: this isn't called twice for some wrappers, like the Jitsi wrapper.
SdkConfig.put(configJson || {});
}
}
export function loadOlm(): Promise<void> {
/* Load Olm. We try the WebAssembly version first, and then the legacy,
* asm.js version if that fails. For this reason we need to wait for this
* to finish before continuing to load the rest of the app. In future
* we could somehow pass a promise down to react-sdk and have it wait on
* that so olm can be loading in parallel with the rest of the app.
*
* We also need to tell the Olm js to look for its wasm file at the same
* level as index.html. It really should be in the same place as the js,
* ie. in the bundle directory, but as far as I can tell this is
* completely impossible with webpack. We do, however, use a hashed
* filename to avoid caching issues.
*/
return Olm.init({
locateFile: () => olmWasmPath,
}).then(() => {
console.log("Using WebAssembly Olm");
}).catch((e) => {
console.log("Failed to load Olm: trying legacy version", e);
return new Promise((resolve, reject) => {
const s = document.createElement('script');
s.src = 'olm_legacy.js'; // XXX: This should be cache-busted too
s.onload = resolve;
s.onerror = reject;
document.body.appendChild(s);
}).then(() => {
// Init window.Olm, ie. the one just loaded by the script tag,
// not 'Olm' which is still the failed wasm version.
return window.Olm.init();
}).then(() => {
console.log("Using legacy Olm");
}).catch((e) => {
console.log("Both WebAssembly and asm.js Olm failed!", e);
});
});
}
export async function loadLanguage() {
const prefLang = SettingsStore.getValue("language", null, /*excludeDefault=*/true);
let langs = [];
if (!prefLang) {
languageHandler.getLanguagesFromBrowser().forEach((l) => {
langs.push(...languageHandler.getNormalizedLanguageKeys(l));
});
} else {
langs = [prefLang];
}
try {
await languageHandler.setLanguage(langs);
document.documentElement.setAttribute("lang", languageHandler.getCurrentLanguage());
} catch (e) {
console.error("Unable to set language", e);
}
}

View File

@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Jitsi Widget</title>
</head>
<body>
<div id="jitsiContainer"><!-- the js will put the conference here --></div>
<div id="joinButtonContainer">
<div class="joinConferenceFloating">
<div class="joinConferencePrompt">
<!-- TODO: i18n -->
<h2>Jitsi Video Conference</h2>
<button type="button" id="joinButton">Join Conference</button>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,75 @@
/*
Copyright 2020 New Vector Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// TODO: Match the user's theme: https://github.com/vector-im/riot-web/issues/12794
@font-face {
font-family: 'Nunito';
font-style: normal;
font-weight: 400;
src: url('~matrix-react-sdk/res/fonts/Nunito/Nunito-Regular.ttf') format('truetype');
}
body {
font-family: Nunito, Arial, Helvetica, sans-serif;
background-color: #181b21;
color: #edf3ff;
}
body, html {
padding: 0;
margin: 0;
}
#jitsiContainer {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
#joinButtonContainer {
display: table;
position: absolute;
height: 100%;
width: 100%;
}
.joinConferenceFloating {
display: table-cell;
vertical-align: middle;
}
.joinConferencePrompt {
margin-left: auto;
margin-right: auto;
width: 90%;
text-align: center;
}
#joinButton {
// A mix of AccessibleButton styles
cursor: pointer;
padding: 7px 18px;
text-align: center;
border-radius: 4px;
display: inline-block;
font-size: 14px;
color: #ffffff;
background-color: #03b381;
border: 0;
}

123
src/vector/jitsi/index.ts Normal file
View File

@@ -0,0 +1,123 @@
/*
Copyright 2020 New Vector Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// We have to trick webpack into loading our CSS for us.
require("./index.scss");
import * as qs from 'querystring';
import { Capability, WidgetApi } from "matrix-react-sdk/src/widgets/WidgetApi";
// Dev note: we use raw JS without many dependencies to reduce bundle size.
// We do not need all of React to render a Jitsi conference.
declare var JitsiMeetExternalAPI: any;
let inConference = false;
// Jitsi params
let jitsiDomain: string;
let conferenceId: string;
let displayName: string;
let avatarUrl: string;
let userId: string;
let widgetApi: WidgetApi;
(async function () {
try {
// The widget's options are encoded into the fragment to avoid leaking info to the server. The widget
// spec on the other hand requires the widgetId and parentUrl to show up in the regular query string.
const widgetQuery = qs.parse(window.location.hash.substring(1));
const query = Object.assign({}, qs.parse(window.location.search.substring(1)), widgetQuery);
const qsParam = (name: string, optional = false): string => {
if (!optional && (!query[name] || typeof (query[name]) !== 'string')) {
throw new Error(`Expected singular ${name} in query string`);
}
return <string>query[name];
};
// Set this up as early as possible because Riot will be hitting it almost immediately.
widgetApi = new WidgetApi(qsParam('parentUrl'), qsParam('widgetId'), [
Capability.AlwaysOnScreen,
Capability.GetRiotWebConfig,
]);
widgetApi.expectingExplicitReady = true;
// Populate the Jitsi params now
jitsiDomain = qsParam('conferenceDomain');
conferenceId = qsParam('conferenceId');
displayName = qsParam('displayName', true);
avatarUrl = qsParam('avatarUrl', true); // http not mxc
userId = qsParam('userId');
await widgetApi.waitReady();
await widgetApi.setAlwaysOnScreen(false); // start off as detachable from the screen
const riotConfig = await widgetApi.getRiotConfig();
// Get the Jitsi Meet API loaded up as fast as possible, but ensure that the widget's postMessage
// receiver (WidgetApi) is up and running first.
const scriptTag = document.createElement("script");
scriptTag.src = riotConfig['jitsi']['externalApiUrl'];
document.body.appendChild(scriptTag);
// TODO: register widgetApi listeners for PTT controls (https://github.com/vector-im/riot-web/issues/12795)
document.getElementById("joinButton").onclick = () => joinConference();
} catch (e) {
console.error("Error setting up Jitsi widget", e);
document.getElementById("jitsiContainer").innerText = "Failed to load Jitsi widget";
switchVisibleContainers();
}
})();
function switchVisibleContainers() {
inConference = !inConference;
document.getElementById("jitsiContainer").style.visibility = inConference ? 'unset' : 'hidden';
document.getElementById("joinButtonContainer").style.visibility = inConference ? 'hidden' : 'unset';
}
function joinConference() { // event handler bound in HTML
switchVisibleContainers();
// noinspection JSIgnoredPromiseFromCall
widgetApi.setAlwaysOnScreen(true); // ignored promise because we don't care if it works
const meetApi = new JitsiMeetExternalAPI(jitsiDomain, {
width: "100%",
height: "100%",
parentNode: document.querySelector("#jitsiContainer"),
roomName: conferenceId,
interfaceConfigOverwrite: {
SHOW_JITSI_WATERMARK: false,
SHOW_WATERMARK_FOR_GUESTS: false,
MAIN_TOOLBAR_BUTTONS: [],
VIDEO_LAYOUT_FIT: "height",
},
});
if (displayName) meetApi.executeCommand("displayName", displayName);
if (avatarUrl) meetApi.executeCommand("avatarUrl", avatarUrl);
if (userId) meetApi.executeCommand("email", userId);
meetApi.on("readyToClose", () => {
switchVisibleContainers();
// noinspection JSIgnoredPromiseFromCall
widgetApi.setAlwaysOnScreen(false); // ignored promise because we don't care if it works
document.getElementById("jitsiContainer").innerHTML = "";
});
}

File diff suppressed because one or more lines are too long

View File

@@ -23,15 +23,29 @@ limitations under the License.
import VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';
import BaseEventIndexManager from 'matrix-react-sdk/src/indexing/BaseEventIndexManager';
import dis from 'matrix-react-sdk/src/dispatcher';
import { _t } from 'matrix-react-sdk/src/languageHandler';
import { _t, _td } from 'matrix-react-sdk/src/languageHandler';
import * as rageshake from 'matrix-react-sdk/src/rageshake/rageshake';
import {MatrixClient} from "matrix-js-sdk";
import Modal from "matrix-react-sdk/src/Modal";
import InfoDialog from "matrix-react-sdk/src/components/views/dialogs/InfoDialog";
import Spinner from "matrix-react-sdk/src/components/views/elements/Spinner";
import {Categories, Modifiers, registerShortcut} from "matrix-react-sdk/src/accessibility/KeyboardShortcuts";
import {Key} from "matrix-react-sdk/src/Keyboard";
import React from "react";
const ipcRenderer = window.ipcRenderer;
const isMac = navigator.platform.toUpperCase().includes('MAC');
// register Mac specific shortcuts
if (isMac) {
registerShortcut(Categories.NAVIGATION, {
keybinds: [{
modifiers: [Modifiers.COMMAND],
key: Key.COMMA,
}],
description: _td("Open user settings"),
});
}
function platformFriendlyName(): string {
// used to use window.process but the same info is available here
@@ -122,6 +136,10 @@ class SeshatIndexManager extends BaseEventIndexManager {
return this._ipcCall('addEventToIndex', ev, profile);
}
async deleteEvent(eventId: string): Promise<boolean> {
return this._ipcCall('deleteEvent', eventId);
}
async isEventIndexEmpty(): Promise<boolean> {
return this._ipcCall('isEventIndexEmpty');
}
@@ -204,6 +222,10 @@ export default class ElectronPlatform extends VectorBasePlatform {
ipcRenderer.on('ipcReply', this._onIpcReply.bind(this));
ipcRenderer.on('update-downloaded', this.onUpdateDownloaded.bind(this));
ipcRenderer.on('preferences', () => {
dis.dispatch({ action: 'view_user_settings' });
});
this.startUpdateCheck = this.startUpdateCheck.bind(this);
this.stopUpdateCheck = this.stopUpdateCheck.bind(this);
}
@@ -297,7 +319,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
supportsAutoHideMenuBar(): boolean {
// This is irelevant on Mac as Menu bars don't live in the app window
return !navigator.platform.toUpperCase().includes('MAC');
return !isMac;
}
async getAutoHideMenuBarEnabled(): boolean {
@@ -310,7 +332,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
supportsMinimizeToTray(): boolean {
// Things other than Mac support tray icons
return !navigator.platform.toUpperCase().includes('MAC');
return !isMac;
}
async getMinimizeToTrayEnabled(): boolean {

View File

@@ -50,7 +50,7 @@ function initRageshake() {
initRageshake();
global.mxSendRageshake = function(text, withLogs) {
window.mxSendRageshake = function(text: string, withLogs?: boolean) {
if (withLogs === undefined) withLogs = true;
if (!text || !text.trim()) {
console.error("Cannot send a rageshake without a message - please tell us what went wrong");

View File

@@ -1,5 +1,5 @@
/*
Copyright 2018 New Vector Ltd
Copyright 2018, 2020 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -20,7 +20,7 @@ import * as qs from 'querystring';
// so we're re-using query string like format
//
// returns {location, params}
export function parseQsFromFragment(location) {
export function parseQsFromFragment(location: Location) {
// if we have a fragment, it will start with '#', which we need to drop.
// (if we don't, this will return '').
const fragment = location.hash.substring(1);
@@ -41,6 +41,6 @@ export function parseQsFromFragment(location) {
return result;
}
export function parseQs(location) {
export function parseQs(location: Location) {
return qs.parse(location.search.substring(1));
}

View File

@@ -9,11 +9,14 @@
"sourceMap": false,
"outDir": "./lib",
"declaration": true,
"jsx": "react",
"types": [
"node"
"node",
"react"
]
},
"include": [
"./src/**/*.ts"
"./src/**/*.ts",
"./src/**/*.tsx"
]
}

View File

@@ -34,6 +34,7 @@ module.exports = (env, argv) => {
"bundle": "./src/vector/index.js",
"indexeddb-worker": "./src/vector/indexeddb-worker.js",
"mobileguide": "./src/vector/mobile_guide/index.js",
"jitsi": "./src/vector/jitsi/index.ts",
"usercontent": "./node_modules/matrix-react-sdk/src/usercontent/index.js",
// CSS themes
@@ -55,6 +56,9 @@ module.exports = (env, argv) => {
enforce: true,
// Do not add `chunks: 'all'` here because you'll break the app entry point.
},
default: {
reuseExistingChunk: true,
},
},
},
@@ -82,7 +86,7 @@ module.exports = (env, argv) => {
aliasFields: ['matrix_src_browser', 'browser'],
// We need to specify that TS can be resolved without an extension
extensions: ['.js', '.json', '.ts'],
extensions: ['.js', '.json', '.ts', '.tsx'],
alias: {
// alias any requires to the react module to the one in our path,
// otherwise we tend to get the react source included twice when
@@ -92,6 +96,9 @@ module.exports = (env, argv) => {
// same goes for js-sdk - we don't need two copies.
"matrix-js-sdk": path.resolve(__dirname, 'node_modules/matrix-js-sdk'),
// and prop-types and sanitize-html
"prop-types": path.resolve(__dirname, 'node_modules/prop-types'),
"sanitize-html": path.resolve(__dirname, 'node_modules/sanitize-html'),
// Define a variable so the i18n stuff can load
"$webapp": path.resolve(__dirname, 'webapp'),
@@ -303,13 +310,21 @@ module.exports = (env, argv) => {
// HtmlWebpackPlugin will screw up our formatting like the names
// of the themes and which chunks we actually care about.
inject: false,
excludeChunks: ['mobileguide', 'usercontent'],
excludeChunks: ['mobileguide', 'usercontent', 'jitsi'],
minify: argv.mode === 'production',
vars: {
og_image_url: og_image_url,
},
}),
// This is the jitsi widget wrapper (embedded, so isolated stack)
new HtmlWebpackPlugin({
template: './src/vector/jitsi/index.html',
filename: 'jitsi.html',
minify: argv.mode === 'production',
chunks: ['jitsi'],
}),
// This is the mobile guide's entry point (separate for faster mobile loading)
new HtmlWebpackPlugin({
template: './src/vector/mobile_guide/index.html',

787
yarn.lock

File diff suppressed because it is too large Load Diff