Compare commits
116 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1f543994d4 | ||
|
|
8e81ee071f | ||
|
|
7815810cf8 | ||
|
|
14fc25e635 | ||
|
|
1726615b8a | ||
|
|
82f599714f | ||
|
|
a14cff6539 | ||
|
|
003a2942fe | ||
|
|
63a2caa091 | ||
|
|
0dc9cdadf9 | ||
|
|
2c0fef92ef | ||
|
|
f58c59553f | ||
|
|
935914e572 | ||
|
|
58c8ac05b9 | ||
|
|
4bbfdaa818 | ||
|
|
e0ab2bb96e | ||
|
|
0b63f04b4b | ||
|
|
d6cb83eb7a | ||
|
|
af349a7ac5 | ||
|
|
d4fa099877 | ||
|
|
98f1536d45 | ||
|
|
70e981f588 | ||
|
|
d193c0909f | ||
|
|
ec49f4555b | ||
|
|
7a7abc74d9 | ||
|
|
87527d7b16 | ||
|
|
6413c3c2fa | ||
|
|
4b49fb49ad | ||
|
|
9d39a3aea7 | ||
|
|
628409d75e | ||
|
|
69f72e330a | ||
|
|
993155d56a | ||
|
|
3500bbe53d | ||
|
|
06852436e6 | ||
|
|
c8c99d7ded | ||
|
|
92eb687a75 | ||
|
|
76c93c8bf7 | ||
|
|
fe0ed2b4f3 | ||
|
|
2ce448943b | ||
|
|
2000f420bd | ||
|
|
979ce51208 | ||
|
|
9be380fdaf | ||
|
|
42c6a26e9f | ||
|
|
abc4f42f83 | ||
|
|
b1c106e8b2 | ||
|
|
ae7f354811 | ||
|
|
f3ef2aba2b | ||
|
|
429bd17906 | ||
|
|
01881f5ef4 | ||
|
|
42bbf4c517 | ||
|
|
931ca6e3bd | ||
|
|
cfee2a43fb | ||
|
|
1b1608c56d | ||
|
|
7fef41f3a7 | ||
|
|
5e834a50a9 | ||
|
|
cbf35a6060 | ||
|
|
a128961d03 | ||
|
|
d12f33fb58 | ||
|
|
b954292e06 | ||
|
|
d587a8e910 | ||
|
|
2c227f68d4 | ||
|
|
55c1f01f4c | ||
|
|
098984dd26 | ||
|
|
ad1d4cba43 | ||
|
|
36851a2aa3 | ||
|
|
59d37ec94b | ||
|
|
6558d6d828 | ||
|
|
754d849055 | ||
|
|
d75045e852 | ||
|
|
fdec64f59c | ||
|
|
9ed7c96df6 | ||
|
|
93da1f192b | ||
|
|
657fa847c6 | ||
|
|
7a237e7045 | ||
|
|
5900c7090f | ||
|
|
c32d3efd52 | ||
|
|
2419db5195 | ||
|
|
428f49bb7a | ||
|
|
b9560c8cfc | ||
|
|
a968389c85 | ||
|
|
5b63be6a57 | ||
|
|
bf174e3f0f | ||
|
|
7d800f9f38 | ||
|
|
3bc6b08cad | ||
|
|
34dab73150 | ||
|
|
59cefb6ac8 | ||
|
|
e8ebf886e4 | ||
|
|
6875ffe0d5 | ||
|
|
befc7589cd | ||
|
|
ca632fd2da | ||
|
|
3b28ebecef | ||
|
|
758e2d6bfd | ||
|
|
21dd4c99f3 | ||
|
|
45fb8adc5d | ||
|
|
4cf86fd50a | ||
|
|
88bb5a49ed | ||
|
|
5c5e7caacf | ||
|
|
bf35dd2b46 | ||
|
|
bce0bf1b1d | ||
|
|
cd829d3c1c | ||
|
|
faca8799db | ||
|
|
d86fd9e753 | ||
|
|
c75e888c90 | ||
|
|
19ff8dde1f | ||
|
|
801946782b | ||
|
|
5a77025dec | ||
|
|
d0413f0d15 | ||
|
|
d41fee06a1 | ||
|
|
bbe9a73266 | ||
|
|
c29dc0bad8 | ||
|
|
41738c322a | ||
|
|
d18b0f87d4 | ||
|
|
3869a4d22e | ||
|
|
d0679efe5d | ||
|
|
fb62f6dfb4 | ||
|
|
57d2026a40 |
@@ -29,6 +29,7 @@
|
||||
"test/url/urlsearchparams",
|
||||
|
||||
"test/cors",
|
||||
"test/crypto",
|
||||
"test/iframe/sandbox",
|
||||
"test/json",
|
||||
"test/network/fetch",
|
||||
|
||||
90
CHANGELOG.md
90
CHANGELOG.md
@@ -1,3 +1,93 @@
|
||||
Changes in [1.6.8](https://github.com/vector-im/riot-web/releases/tag/v1.6.8) (2020-07-03)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.8-rc.1...v1.6.8)
|
||||
|
||||
* Upgrade to JS SDK 7.1.0 and React SDK 2.9.0
|
||||
|
||||
Changes in [1.6.8-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.6.8-rc.1) (2020-07-01)
|
||||
====================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.7...v1.6.8-rc.1)
|
||||
|
||||
* Upgrade to JS SDK 7.1.0-rc.1 and React SDK 2.9.0-rc.1
|
||||
* Update from Weblate
|
||||
[\#14282](https://github.com/vector-im/riot-web/pull/14282)
|
||||
* Show a download completed toast in electron
|
||||
[\#14248](https://github.com/vector-im/riot-web/pull/14248)
|
||||
* Add the new spinner feature labs flag
|
||||
[\#14213](https://github.com/vector-im/riot-web/pull/14213)
|
||||
* Fix loading-test for SSO plaf changes
|
||||
[\#14212](https://github.com/vector-im/riot-web/pull/14212)
|
||||
* Fix spelling on startup error page
|
||||
[\#14199](https://github.com/vector-im/riot-web/pull/14199)
|
||||
* Document fonts in custom theme
|
||||
[\#14175](https://github.com/vector-im/riot-web/pull/14175)
|
||||
* Update from Weblate
|
||||
[\#14129](https://github.com/vector-im/riot-web/pull/14129)
|
||||
* ElectronPlatform: Implement the isRoomIndexed method.
|
||||
[\#13957](https://github.com/vector-im/riot-web/pull/13957)
|
||||
* ElectronPlatform: Add support to set and get the index user version.
|
||||
[\#14080](https://github.com/vector-im/riot-web/pull/14080)
|
||||
* Mark the new room list as ready for general testing
|
||||
[\#14102](https://github.com/vector-im/riot-web/pull/14102)
|
||||
|
||||
Changes in [1.6.7](https://github.com/vector-im/riot-web/releases/tag/v1.6.7) (2020-06-29)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.6...v1.6.7)
|
||||
|
||||
* Upgrade to React SDK 2.8.1
|
||||
|
||||
Changes in [1.6.6](https://github.com/vector-im/riot-web/releases/tag/v1.6.6) (2020-06-23)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.6-rc.1...v1.6.6)
|
||||
|
||||
* Upgrade to JS SDK 7.0.0 and React SDK 2.8.0
|
||||
|
||||
Changes in [1.6.6-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.6.6-rc.1) (2020-06-17)
|
||||
====================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.5...v1.6.6-rc.1)
|
||||
|
||||
* Upgrade to JS SDK 7.0.0-rc.1 and React SDK 2.8.0-rc.1
|
||||
* Update from Weblate
|
||||
[\#14067](https://github.com/vector-im/riot-web/pull/14067)
|
||||
* Update from Weblate
|
||||
[\#14032](https://github.com/vector-im/riot-web/pull/14032)
|
||||
* Attempt to fix decoder ring for relative hosted riots
|
||||
[\#13987](https://github.com/vector-im/riot-web/pull/13987)
|
||||
* Upgrade deps
|
||||
[\#13952](https://github.com/vector-im/riot-web/pull/13952)
|
||||
* Fix riot-desktop manual update check getting stuck on Downloading...
|
||||
[\#13946](https://github.com/vector-im/riot-web/pull/13946)
|
||||
* Bump websocket-extensions from 0.1.3 to 0.1.4
|
||||
[\#13943](https://github.com/vector-im/riot-web/pull/13943)
|
||||
* Add e2ee-default:false docs
|
||||
[\#13914](https://github.com/vector-im/riot-web/pull/13914)
|
||||
* make IPC calls to get pickle key
|
||||
[\#13846](https://github.com/vector-im/riot-web/pull/13846)
|
||||
* fix loading test for new sso pattern
|
||||
[\#13913](https://github.com/vector-im/riot-web/pull/13913)
|
||||
* Fix login loop where the sso flow returns to `#/login`
|
||||
[\#13889](https://github.com/vector-im/riot-web/pull/13889)
|
||||
* Fix typo in docs
|
||||
[\#13905](https://github.com/vector-im/riot-web/pull/13905)
|
||||
* Remove cross-signing from labs
|
||||
[\#13904](https://github.com/vector-im/riot-web/pull/13904)
|
||||
* Add PWA Platform with PWA-specific badge controls
|
||||
[\#13890](https://github.com/vector-im/riot-web/pull/13890)
|
||||
* Modernizr check for subtle crypto as we require it all over the place
|
||||
[\#13828](https://github.com/vector-im/riot-web/pull/13828)
|
||||
|
||||
Changes in [1.6.5](https://github.com/vector-im/riot-web/releases/tag/v1.6.5) (2020-06-16)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.4...v1.6.5)
|
||||
|
||||
* Upgrade to JS SDK 6.2.2 and React SDK 2.7.2
|
||||
|
||||
Changes in [1.6.4](https://github.com/vector-im/riot-web/releases/tag/v1.6.4) (2020-06-05)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.3...v1.6.4)
|
||||
|
||||
* Upgrade to JS SDK 6.2.1 and React SDK 2.7.1
|
||||
|
||||
Changes in [1.6.3](https://github.com/vector-im/riot-web/releases/tag/v1.6.3) (2020-06-04)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.3-rc.1...v1.6.3)
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
"defaultCountryCode": "GB",
|
||||
"showLabsSettings": false,
|
||||
"features": {
|
||||
"feature_new_spinner": "labs",
|
||||
"feature_font_scaling": "labs",
|
||||
"feature_pinning": "labs",
|
||||
"feature_custom_status": "labs",
|
||||
|
||||
@@ -91,7 +91,7 @@ For a good example, see https://riot.im/develop/config.json.
|
||||
call buttons - integration managers may use a different domain.
|
||||
1. `enable_presence_by_hs_url`: The property key should be the URL of the homeserver
|
||||
and its value defines whether to enable/disable the presence status display
|
||||
from that homeserver. If no options are configurd, presence is shown for all
|
||||
from that homeserver. If no options are configured, presence is shown for all
|
||||
homeservers.
|
||||
1. `disable_guests`: Disables guest access tokens and auto-guest registrations.
|
||||
Defaults to false (guests are allowed).
|
||||
|
||||
16
docs/e2ee.md
Normal file
16
docs/e2ee.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# End to end encryption by default
|
||||
|
||||
By default, Riot will create encrypted DM rooms if the user you are chatting with has keys uploaded on their account.
|
||||
For private room creation, Riot will default to encryption on but give you the choice to opt-out.
|
||||
|
||||
## Disabling encryption by default
|
||||
|
||||
Set the following on your homeserver's
|
||||
`/.well-known/matrix/client` config:
|
||||
```json
|
||||
{
|
||||
"im.vector.riot.e2ee": {
|
||||
"default": false
|
||||
}
|
||||
}
|
||||
```
|
||||
25
docs/labs.md
25
docs/labs.md
@@ -7,6 +7,10 @@ to `Settings->Labs`. This list is non-exhaustive and subject to change, chat in
|
||||
**Be warned! Labs features are not finalised, they may be fragile, they may change, they may be
|
||||
dropped. Ask in the room if you are unclear about any details here.**
|
||||
|
||||
## New spinner design (`feature_new_spinner`)
|
||||
|
||||
Replaces the old spinner image with a new, svg-based one featuring a sleeker design.
|
||||
|
||||
## Font scaling (`feature_font_scaling`)
|
||||
|
||||
Enables font scaling options for accessibility. To alter the scale check the
|
||||
@@ -72,22 +76,6 @@ An implementation of [MSC2241](https://github.com/matrix-org/matrix-doc/pull/224
|
||||
|
||||
This also includes a new implementation of the user & member info panel, designed to share more code between showing community members & room members. Built on top of this new panel is also a new UX for verification from the member panel.
|
||||
|
||||
## Cross-signing
|
||||
|
||||
Cross-signing ([MSC1756](https://github.com/matrix-org/matrix-doc/pull/1756))
|
||||
improves the device verification experience by allowing you to verify a user
|
||||
instead of verifying each of their devices.
|
||||
|
||||
The feature is enabled by default and does not follow a traditional labs flag
|
||||
at the moment. If something goes wrong, add this to your config to disable it:
|
||||
```json
|
||||
{
|
||||
"settingDefaults": {
|
||||
"feature_cross_signing": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The setting will be removed in a future release, enabling it non-optionally for
|
||||
all users.
|
||||
|
||||
@@ -112,11 +100,10 @@ theme definition.
|
||||
|
||||
For some sample themes, check out [aaronraimist/riot-web-themes](https://github.com/aaronraimist/riot-web-themes).
|
||||
|
||||
## New room list (`feature_new_room_list`) (in development)
|
||||
## New room list (`feature_new_room_list`)
|
||||
|
||||
A complete rewrite of the room list is underway to increase performance, stability,
|
||||
and general usability. This is expected to take a while to complete and as such might
|
||||
be missing critical features - please use at your own risk, though do report bugs!
|
||||
and general usability. This is still rapidly changing, but feel free to give it a test.
|
||||
|
||||
## IRC message layout (`feature_irc_ui`)
|
||||
|
||||
|
||||
@@ -41,6 +41,16 @@ eg. in config.json:
|
||||
{
|
||||
"name": "Electric Blue",
|
||||
"is_dark": false,
|
||||
"fonts": {
|
||||
"faces": [
|
||||
{
|
||||
"font-family": "Inter",
|
||||
"src": [{"url": "/fonts/Inter.ttf", "format": "ttf"}]
|
||||
}
|
||||
],
|
||||
"general": "Inter, sans",
|
||||
"monospace": "'Courier New'"
|
||||
},
|
||||
"colors": {
|
||||
"accent-color": "#3596fc",
|
||||
"primary-color": "#368bd6",
|
||||
@@ -84,3 +94,5 @@ eg. in config.json:
|
||||
`username-colors` is expected to contain 8 colors. `avatar-background-colors` is expected to contain 3 colors. Both values are optional and have fallbacks from the built-in theme.
|
||||
|
||||
These are exposed as `--username-colors_0`, ... and `--avatar-background-colors_0`, ... respectively in CSS.
|
||||
|
||||
All properties in `fonts` are optional, and will default to the standard Riot fonts.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "riot-web",
|
||||
"productName": "Riot",
|
||||
"version": "1.6.3",
|
||||
"version": "1.6.8",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "New Vector Ltd.",
|
||||
"repository": {
|
||||
@@ -60,8 +60,8 @@
|
||||
"browser-request": "^0.3.3",
|
||||
"gfm.css": "^1.1.2",
|
||||
"highlight.js": "^9.13.1",
|
||||
"matrix-js-sdk": "6.2.0",
|
||||
"matrix-react-sdk": "2.7.0",
|
||||
"matrix-js-sdk": "7.1.0",
|
||||
"matrix-react-sdk": "2.9.0",
|
||||
"olm": "https://packages.matrix.org/npm/olm/olm-3.1.4.tgz",
|
||||
"postcss-easings": "^2.0.0",
|
||||
"prop-types": "^15.7.2",
|
||||
|
||||
@@ -4,8 +4,8 @@ class StartupError extends Error {}
|
||||
* We need to know the bundle path before we can fetch the sourcemap files. In a production environment, we can guess
|
||||
* it using this.
|
||||
*/
|
||||
async function getBundleName() {
|
||||
const res = await fetch("../index.html");
|
||||
async function getBundleName(baseUrl) {
|
||||
const res = await fetch(new URL("index.html", baseUrl).toString());
|
||||
if (!res.ok) {
|
||||
throw new StartupError(`Couldn't fetch index.html to prefill bundle; ${res.status} ${res.statusText}`);
|
||||
}
|
||||
@@ -25,7 +25,7 @@ function validateBundle(value) {
|
||||
* The purpose of this is just to validate that the user entered a real bundle, and provide feedback.
|
||||
*/
|
||||
const bundleCache = new Map();
|
||||
function bundleSubject(bundle) {
|
||||
function bundleSubject(baseUrl, bundle) {
|
||||
if (!bundle.match(/^[0-9a-f]{20}$/)) throw new Error("Bad input");
|
||||
if (bundleCache.has(bundle)) {
|
||||
return bundleCache.get(bundle);
|
||||
@@ -33,7 +33,7 @@ function bundleSubject(bundle) {
|
||||
const fetcher = new rxjs.BehaviorSubject(Pending.of());
|
||||
bundleCache.set(bundle, fetcher);
|
||||
|
||||
fetch(`/bundles/${bundle}/bundle.js.map`).then((res) => {
|
||||
fetch(new URL(`bundles/${bundle}/bundle.js.map`, baseUrl).toString()).then((res) => {
|
||||
res.body.cancel(); /* Bail on the download immediately - it could be big! */
|
||||
const status = res.ok;
|
||||
if (status) {
|
||||
@@ -145,6 +145,7 @@ function ProgressBar({ fetchStatus }) {
|
||||
* The main component.
|
||||
*/
|
||||
function BundlePicker() {
|
||||
const [baseUrl, setBaseUrl] = React.useState(new URL("..", window.location).toString());
|
||||
const [bundle, setBundle] = React.useState("");
|
||||
const [file, setFile] = React.useState("");
|
||||
const [line, setLine] = React.useState("1");
|
||||
@@ -153,19 +154,25 @@ function BundlePicker() {
|
||||
const [bundleFetchStatus, setBundleFetchStatus] = React.useState(None);
|
||||
const [fileFetchStatus, setFileFetchStatus] = React.useState(None);
|
||||
|
||||
/* At startup, try to fill in the bundle name for the user */
|
||||
/* On baseUrl change, try to fill in the bundle name for the user */
|
||||
React.useEffect(() => {
|
||||
getBundleName().then((name) => {
|
||||
console.log("DEBUG", baseUrl);
|
||||
getBundleName(baseUrl).then((name) => {
|
||||
console.log("DEBUG", name);
|
||||
if (bundle === "" && validateBundle(name) !== None) {
|
||||
setBundle(name);
|
||||
}
|
||||
}, console.log.bind(console));
|
||||
}, []);
|
||||
|
||||
}, [baseUrl]);
|
||||
|
||||
/* ------------------------- */
|
||||
/* Follow user state changes */
|
||||
/* ------------------------- */
|
||||
const onBaseUrlChange = React.useCallback((event) => {
|
||||
const value = event.target.value;
|
||||
setBaseUrl(value);
|
||||
}, []);
|
||||
|
||||
const onBundleChange = React.useCallback((event) => {
|
||||
const value = event.target.value;
|
||||
setBundle(value);
|
||||
@@ -195,14 +202,14 @@ function BundlePicker() {
|
||||
React.useEffect(() =>
|
||||
validateBundle(bundle).fold({
|
||||
some: (value) => {
|
||||
const subscription = bundleSubject(value)
|
||||
const subscription = bundleSubject(baseUrl, value)
|
||||
.pipe(rxjs.operators.map(Some.of))
|
||||
.subscribe(setBundleFetchStatus);
|
||||
return () => subscription.unsubscribe();
|
||||
},
|
||||
none: () => setBundleFetchStatus(None),
|
||||
}),
|
||||
[bundle]);
|
||||
[baseUrl, bundle]);
|
||||
|
||||
/* Whenever a valid javascript file is input, see if it corresponds to a sourcemap file and initiate a fetch
|
||||
* if so. */
|
||||
@@ -211,7 +218,7 @@ function BundlePicker() {
|
||||
setFileFetchStatus(None);
|
||||
return;
|
||||
}
|
||||
const observable = fetchAsSubject(`/bundles/${bundle}/${file}.map`)
|
||||
const observable = fetchAsSubject(new URL(`bundles/${bundle}/${file}.map`, baseUrl).toString())
|
||||
.pipe(
|
||||
rxjs.operators.map((fetchStatus) => fetchStatus.flatMap(value => {
|
||||
try {
|
||||
@@ -224,7 +231,7 @@ function BundlePicker() {
|
||||
);
|
||||
const subscription = observable.subscribe(setFileFetchStatus);
|
||||
return () => subscription.unsubscribe();
|
||||
}, [bundle, file]);
|
||||
}, [baseUrl, bundle, file]);
|
||||
|
||||
/*
|
||||
* Whenever we have a valid fetched sourcemap, and a valid line, attempt to find the original position from the
|
||||
@@ -255,6 +262,16 @@ function BundlePicker() {
|
||||
/* ------ */
|
||||
return e('div', {},
|
||||
e('div', { className: 'inputs' },
|
||||
e('div', { className: 'baseUrl' },
|
||||
e('label', { htmlFor: 'baseUrl'}, 'Base URL'),
|
||||
e('input', {
|
||||
name: 'baseUrl',
|
||||
required: true,
|
||||
pattern: ".+",
|
||||
onChange: onBaseUrlChange,
|
||||
value: baseUrl,
|
||||
}),
|
||||
),
|
||||
e('div', { className: 'bundle' },
|
||||
e('label', { htmlFor: 'bundle'}, 'Bundle'),
|
||||
e('input', {
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"hosting_signup_link": "https://modular.im/services/matrix-hosting-riot?utm_source=riot-web&utm_medium=web",
|
||||
"bug_report_endpoint_url": "https://riot.im/bugreports/submit",
|
||||
"features": {
|
||||
"feature_new_spinner": "labs",
|
||||
"feature_font_scaling": "labs",
|
||||
"feature_pinning": "labs",
|
||||
"feature_custom_status": "labs",
|
||||
|
||||
6
src/@types/global.d.ts
vendored
6
src/@types/global.d.ts
vendored
@@ -31,6 +31,12 @@ declare global {
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/InstallTrigger
|
||||
InstallTrigger: any;
|
||||
}
|
||||
|
||||
interface Navigator {
|
||||
// PWA badging extensions https://w3c.github.io/badging/
|
||||
setAppBadge?(count: number): Promise<void>;
|
||||
clearAppBadge?(): Promise<void>;
|
||||
}
|
||||
}
|
||||
|
||||
// add method which is missing from the node typing
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
"Invalid JSON": "Invalid JSON",
|
||||
"Unable to load config file: please refresh the page to try again.": "Unable to load config file: please refresh the page to try again.",
|
||||
"Unexpected error preparing the app. See console for details.": "Unexpected error preparing the app. See console for details.",
|
||||
"Download Completed": "Download Completed",
|
||||
"Open": "Open",
|
||||
"Dismiss": "Dismiss",
|
||||
"Open user settings": "Open user settings",
|
||||
"Previous/next recently visited room or community": "Previous/next recently visited room or community",
|
||||
"Riot Desktop (%(platformName)s)": "Riot Desktop (%(platformName)s)",
|
||||
@@ -18,7 +21,6 @@
|
||||
"powered by Matrix": "powered by Matrix",
|
||||
"Custom Server Options": "Custom Server Options",
|
||||
"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.": "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.",
|
||||
"Dismiss": "Dismiss",
|
||||
"Unsupported browser": "Unsupported browser",
|
||||
"Your browser can't run Riot": "Your browser can't run Riot",
|
||||
"Riot uses advanced browser features which aren't supported by your current browser.": "Riot uses advanced browser features which aren't supported by your current browser.",
|
||||
|
||||
@@ -9,14 +9,14 @@
|
||||
"Welcome to Riot.im": "Bienvenido a Riot.im",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas y colaboración con el poder de [matrix]",
|
||||
"Chat with Riot Bot": "Hablar con Riot Bot",
|
||||
"Sign In": "Registrarse",
|
||||
"Sign In": "Iniciar sesión",
|
||||
"Create Account": "Crear cuenta",
|
||||
"Need help?": "Necesitas ayuda?",
|
||||
"Explore rooms": "Explorar salas",
|
||||
"Room Directory": "Directorio de salas",
|
||||
"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.": "Puedes usar las opciones personalizadas del servidor para iniciar sesión en otros servidores Matrix, especificando la dirección URL del servidor. Esto te permite usar una cuenta Matrix en un servidor diferente.",
|
||||
"Unexpected error preparing the app. See console for details.": "Error inesperado preparando la aplicación. Vea la consola para más detalles.",
|
||||
"Your Riot is misconfigured": "Riot tiene un error de configuración",
|
||||
"Your Riot is misconfigured": "Tu Riot tiene un error de configuración",
|
||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuración errónea: sólo puede especificar uno de default_server_config, default_server_name, o default_hs_url.",
|
||||
"Invalid configuration: no default server specified.": "Configuración errónea: no se ha especificado servidor.",
|
||||
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Tu configuración de Riot contiene JSON inválido. Por favor corrige el error y recarga la página.",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Sinu Rioti seadetes on vigane JSON. Palun, tee see korda ja laadi leht uuesti.",
|
||||
"The message from the parser is: %(message)s": "Sõnum parserist on: %(message)s",
|
||||
"Invalid JSON": "Vigane JSON",
|
||||
"Your Riot is misconfigured": "Sinu Riot on valesti seadistatud",
|
||||
"Your Riot is misconfigured": "Sinu Riot'i seadistused on paigast ära",
|
||||
"Unknown device": "Tundmatu seade",
|
||||
"Invalid configuration: no default server specified.": "Vigane seadistus: vaikimisi server on määramata.",
|
||||
"Unable to load config file: please refresh the page to try again.": "Seadistuste faili laadimine ei õnnestunud: uuesti proovimiseks palun lae leht uuesti.",
|
||||
|
||||
@@ -36,5 +36,7 @@
|
||||
"I understand the risks and wish to continue": "Je comprends les risques et souhaite continuer",
|
||||
"Go to Riot.im": "Aller vers Riot.im",
|
||||
"Failed to start": "Échec au démarrage",
|
||||
"Riot Desktop (%(platformName)s)": "Riot pour bureau (%(platformName)s)"
|
||||
"Riot Desktop (%(platformName)s)": "Riot pour bureau (%(platformName)s)",
|
||||
"Download Completed": "Téléchargement terminé",
|
||||
"Open": "Ouvrir"
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"Invalid configuration: no default server specified.": "Configuración non válida: non se indicou servidor por omisión.",
|
||||
"Missing indexeddb worker script!": "Falta o script indexeddb!",
|
||||
"Unable to load config file: please refresh the page to try again.": "Non se cargou o ficheiro de configuración: actualiza a páxina para reintentalo.",
|
||||
"Open user settings": "Abrir axustes do usuario",
|
||||
"Open user settings": "Abrir axustes da usuaria",
|
||||
"Previous/next recently visited room or community": "Anterior/seguinte sala ou comunidade recentes",
|
||||
"Riot Desktop (%(platformName)s)": "Riot Desktop (%(platformName)s)",
|
||||
"Go to your browser to complete Sign In": "Abre o navegador para realizar a Conexión",
|
||||
@@ -36,5 +36,7 @@
|
||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Podes continuar co teu navegador, pero algunhas características poderían non funcionar e o aspecto da aplicación podería non ser o correcto.",
|
||||
"I understand the risks and wish to continue": "Entendo os riscos e desexo continuar",
|
||||
"Go to Riot.im": "Ir a Riot.im",
|
||||
"Failed to start": "Fallou o inicio"
|
||||
"Failed to start": "Fallou o inicio",
|
||||
"Download Completed": "Descarga realizada",
|
||||
"Open": "Abrir"
|
||||
}
|
||||
|
||||
@@ -36,5 +36,7 @@
|
||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Folytathatod a jelenlegi böngésződdel, de néhány vagy az összes funkció használhatatlan lehet, vagy hibák lehetnek az alkalmazás kinézetében és viselkedésében.",
|
||||
"I understand the risks and wish to continue": "Megértettem a kockázatot és folytatom",
|
||||
"Go to Riot.im": "Irány a Riot.im",
|
||||
"Failed to start": "Az indítás sikertelen"
|
||||
"Failed to start": "Az indítás sikertelen",
|
||||
"Download Completed": "A letöltés befejeződött",
|
||||
"Open": "Megnyitás"
|
||||
}
|
||||
|
||||
@@ -21,5 +21,10 @@
|
||||
"The message from the parser is: %(message)s": "パーザーのメッセージ: %(message)s",
|
||||
"Invalid JSON": "妥当でないJSON",
|
||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "無効な設定: default_server_config、default_server_name、または default_hs_urlのいずれか一つのみが指定できます。",
|
||||
"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.": "サーバーのカスタムオプションに別のホームサーバーURLを指定することで他のMatrixサーバーにサインインすることができます。これにより別のホームサーバー上で既にあるMatrixのアカウントでRiotを使うことができます。"
|
||||
"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.": "サーバーのカスタムオプションに別のホームサーバーURLを指定することで他のMatrixサーバーにサインインすることができます。これにより別のホームサーバー上で既にあるMatrixのアカウントでRiotを使うことができます。",
|
||||
"Your browser can't run Riot": "このブラウザでは Riot を実行できません",
|
||||
"Riot uses advanced browser features which aren't supported by your current browser.": "Riot ではこのブラウザでサポートされていない高度な機能を利用しています。",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "最高のユーザー体験を得るためには、<chromeLink>Chrome</chromeLink>や<firefoxLink>Firefox</firefoxLink>、もしくは<safariLink>Safari</safariLink>をインストールしてください。",
|
||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "現在のブラウザを使い続けることもできますが、いくつか (もしくは全ての) 機能が動作しない可能性や、外観が崩れる可能性があります。",
|
||||
"I understand the risks and wish to continue": "リスクを理解したうえで続行する"
|
||||
}
|
||||
|
||||
@@ -1 +1,35 @@
|
||||
{}
|
||||
{
|
||||
"Invalid JSON": "JSON armeɣtu",
|
||||
"Open user settings": "Ldi iɣewwaṛen n useqdac",
|
||||
"Riot Desktop (%(platformName)s)": "Riot n tnarit (%(platformName)s)",
|
||||
"Go to your browser to complete Sign In": "Ddu ɣer iminig akken ad tkemleḍ ajerred",
|
||||
"Unknown device": "Ibenk arussin",
|
||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||
"Create Account": "Rnu amiḍan",
|
||||
"powered by Matrix": "s lmendad n Matrix",
|
||||
"Custom Server Options": "Iɣewwaren n uqeddac udmawan",
|
||||
"Dismiss": "Agwi",
|
||||
"Sign In": "Kcem",
|
||||
"Explore rooms": "Snirem tixxamin",
|
||||
"Missing indexeddb worker script!": "Asekript n uxeddam Indexeddb ulac-it!",
|
||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Tawila d tarmeɣtut: mudd-d kan yiwen seg default_server_config, default_server_name, neɣ default_hs_url.",
|
||||
"Invalid configuration: no default server specified.": "Tawila d tarmeɣtut: ulac aqeddac amezwer i d-yettwafernen.",
|
||||
"Your Riot is misconfigured": "Riot inek(inem) ur ittusbadu ara",
|
||||
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Tawila-inek n Riot yesεa JSON armeɣtu. Ma ulac aɣilif, seɣti ugur syen smiren asebter.",
|
||||
"The message from the parser is: %(message)s": "Izen n umaslaḍ d: %(message)s",
|
||||
"Unable to load config file: please refresh the page to try again.": "Yegguma ad d-yali ufaylu n twila: ma ulac aɣilif smiren asebter akken ad tεerḍeḍ tikkelt-nniḍen.",
|
||||
"Unexpected error preparing the app. See console for details.": "Tella-d tuccḍa lawan n uheyyi n usnas: Wali tadiwent i wugar telqeyt.",
|
||||
"Previous/next recently visited room or community": "Taxxamt neɣ tamɣiwent wuɣur kecmen imerza send/seld",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "Ilaq-ak(am) ad tesqedceḍ HTTPs akken ad tesεeddiḍ asiwel s beṭṭu n ugdil.",
|
||||
"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.": "Tzemreḍ ad tesqedceḍ tixtiṛiyin n uqeddac udmawan akken ad teqqneḍ ɣer iqeddacen-nniḍenn Matrix s ufran n URL n uqeddac agejdan-nniḍen. Ayagi ad ak-yeǧǧ ad tesqedceḍ Riot s umiḍan Matrix yellan ɣef uqeddac agejdan-nniḍen.",
|
||||
"Unsupported browser": "Ur yettusefrak ara yiminig",
|
||||
"Your browser can't run Riot": "Iminig-ik(im) ur isedday ara Riot",
|
||||
"Riot uses advanced browser features which aren't supported by your current browser.": "Riot isseqdac timahilin n yiminig leqqayen ur nettusefrak ara d yiminig-ik(im) amiran.",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Ma ulac aɣilif, sebded <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, neɣ<safariLink>Safari</safariLink> i tirmit igerrzen.",
|
||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Tzemreḍ ad tkemmleḍ deg useqdec n yiminig-ik(im) amiran, maca kra n tmahilin neɣ akk zemrent ur nteddu ara, rnu arwes n usnas yezmer ad d-iban d armeɣtu.",
|
||||
"I understand the risks and wish to continue": "Gziɣ ayen ara d-yeḍrun maca bɣiɣ ad kemmleɣ",
|
||||
"Go to Riot.im": "Ṛuḥ ɣer Riot.im",
|
||||
"Failed to start": "Asenker ur yeddi ara",
|
||||
"Welcome to Riot.im": "Ansuf ɣer Riot.im",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Adiwenni & attekki araslemmas d uwgelhan s lmendad n [matrix]"
|
||||
}
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
"Need help?": "Treng du hjelp?",
|
||||
"Explore rooms": "Utforsk romma",
|
||||
"Room Directory": "Romkatalog",
|
||||
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot-konfigurasjonen din har ugyldig JSON-kode. Korriger dette og last inn sida på nytt.",
|
||||
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot-oppsettet ditt inneheld ugyldig JSON-kode. Korriger dette og last inn sida på nytt.",
|
||||
"The message from the parser is: %(message)s": "Meldinga frå kodetolkaren er: %(message)s",
|
||||
"Invalid JSON": "Ugyldig JSON",
|
||||
"Your Riot is misconfigured": "Riot-klienten din er feilkonfiguert",
|
||||
"Your Riot is misconfigured": "Riot-klienten din er sett opp feil",
|
||||
"Unexpected error preparing the app. See console for details.": "Uventa feil under lasting av programmet. Sjå konsollen for detaljar.",
|
||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ugyldig konfigurasjon: berre muleg å berre spesifiere ein av default_server_config, default_server_name eller default_hs_url.",
|
||||
"Invalid configuration: no default server specified.": "Ugyldig konfigurasjon: \"default server\" er ikkje spesifisert."
|
||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ugyldig oppsett: berre muleg å berre spesifiere ein av default_server_config, default_server_name eller default_hs_url.",
|
||||
"Invalid configuration: no default server specified.": "Ugyldig oppsett: ingen \"default server\" er spesifisert."
|
||||
}
|
||||
|
||||
@@ -36,5 +36,7 @@
|
||||
"I understand the risks and wish to continue": "I kuptoj rreziqet dhe dëshiroj të vazhdoj",
|
||||
"Go to Riot.im": "Shko te Riot.im",
|
||||
"Failed to start": "S’u arrit të nisej",
|
||||
"Missing indexeddb worker script!": "Mungon programth worker-i indexeddb-je!"
|
||||
"Missing indexeddb worker script!": "Mungon programth worker-i indexeddb-je!",
|
||||
"Download Completed": "Shkarkim i Plotësuar",
|
||||
"Open": "Hape"
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"Need help?": "Behöver du hjälp?",
|
||||
"Explore rooms": "Utforska rum",
|
||||
"Room Directory": "Rumslista",
|
||||
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Dina Riot-inställningar innhåller ogiltig JSON. Vänligen uppdatera inställningarna och ladda om sidan.",
|
||||
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Dina Riot-inställningar innehåller ogiltig JSON. Vänligen uppdatera inställningarna och ladda om sidan.",
|
||||
"The message from the parser is: %(message)s": "Medelandet från parsern är: %(message)s",
|
||||
"Invalid JSON": "Ogiltig JSON",
|
||||
"Your Riot is misconfigured": "Riot är felkonfigurerat",
|
||||
@@ -23,5 +23,18 @@
|
||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ogilitiga inställningar: enbart möjligt att specificera en default_config, default_server, eller default_hs_url.",
|
||||
"Invalid configuration: no default server specified.": "Ogilitiga inställningar: ingen standardserver specificerad.",
|
||||
"Open user settings": "Öppna användarinställningar",
|
||||
"Go to your browser to complete Sign In": "Gå till din webbläsare för att slutföra inloggningen"
|
||||
"Go to your browser to complete Sign In": "Gå till din webbläsare för att slutföra inloggningen",
|
||||
"Missing indexeddb worker script!": "Saknar indexeddb worker skript!",
|
||||
"Unable to load config file: please refresh the page to try again.": "Kan inte ladda konfigurationsfilen: var god ladda om sidan för att försöka igen.",
|
||||
"Previous/next recently visited room or community": "Föregående/nästa nyligen besökt rum eller community",
|
||||
"Riot Desktop (%(platformName)s)": "Riot Desktop (%(platformName)s)",
|
||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||
"Unsupported browser": "Webbläsaren stöds ej",
|
||||
"Your browser can't run Riot": "Din webbläsare kan inte köra Riot",
|
||||
"Riot uses advanced browser features which aren't supported by your current browser.": "Riot användare avancerade webbläsarfunktioner som inte stöds av din nuvarande webbläsare.",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Installera <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eller <safariLink>Safari</safariLink> för den bästa upplevelsen.",
|
||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Du kan fortsätta använda din nuvarande webbläsare, men vissa eller alla funktioner kanske inte fungerar och uteseendet samt känslan av applikationen kan var felaktig.",
|
||||
"I understand the risks and wish to continue": "Jag förstår riskerna och vill fortsätta",
|
||||
"Go to Riot.im": "Gå till Riot.im",
|
||||
"Failed to start": "Misslyckade att starta"
|
||||
}
|
||||
|
||||
@@ -21,5 +21,20 @@
|
||||
"Your Riot is misconfigured": "您的 Riot 配置有错误",
|
||||
"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.": "无效的配置:只能设置 default_server_config,default_server_name,或 default_hs_url 中的一个。",
|
||||
"Invalid configuration: no default server specified.": "无效的配置:没有设置默认服务器。"
|
||||
"Invalid configuration: no default server specified.": "无效的配置:没有设置默认服务器。",
|
||||
"Missing indexeddb worker script!": "缺少 IndexedDB 辅助脚本!",
|
||||
"Unable to load config file: please refresh the page to try again.": "无法加载配置文件:请再次刷新页面。",
|
||||
"Open user settings": "打开用户设置",
|
||||
"Previous/next recently visited room or community": "上一个 / 下一个最近访问的聊天室或社区",
|
||||
"Riot Desktop (%(platformName)s)": "Riot 桌面版 (%(platformName)s)",
|
||||
"Go to your browser to complete Sign In": "去您的浏览器完成登录",
|
||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||
"Unsupported browser": "不支持的浏览器",
|
||||
"Your browser can't run Riot": "您的浏览器无法运行 Riot",
|
||||
"Riot uses advanced browser features which aren't supported by your current browser.": "Riot 使用了不被您目前的浏览器支持的高级功能。",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "请安装 <chromeLink>Chrome</chromeLink>、<firefoxLink>Firefox</firefoxLink> 或 <safariLink>Safari</safariLink> 以获得最佳体验。",
|
||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "您可以继续使用您目前的浏览器,但部分或全部的功能可能无法正常工作,应用程序的外观可能也看起来不正确。",
|
||||
"I understand the risks and wish to continue": "我了解风险并希望继续",
|
||||
"Go to Riot.im": "去 Riot.im",
|
||||
"Failed to start": "启动失败"
|
||||
}
|
||||
|
||||
@@ -36,5 +36,7 @@
|
||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "您可以繼續使用您目前的瀏覽器,但部份或全部的功能可能會無法運作,而應用程式的外觀與感覺可能也會不正確。",
|
||||
"I understand the risks and wish to continue": "我了解風險並希望繼續",
|
||||
"Go to Riot.im": "到 Riot.im",
|
||||
"Failed to start": "啟動失敗"
|
||||
"Failed to start": "啟動失敗",
|
||||
"Download Completed": "下載完成",
|
||||
"Open": "開啟"
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import * as React from "react";
|
||||
import * as languageHandler from "matrix-react-sdk/src/languageHandler";
|
||||
import SettingsStore from "matrix-react-sdk/src/settings/SettingsStore";
|
||||
import ElectronPlatform from "./platform/ElectronPlatform";
|
||||
import PWAPlatform from "./platform/PWAPlatform";
|
||||
import WebPlatform from "./platform/WebPlatform";
|
||||
import PlatformPeg from "matrix-react-sdk/src/PlatformPeg";
|
||||
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
|
||||
@@ -39,8 +40,10 @@ export const rageshakePromise = initRageshake();
|
||||
export function preparePlatform() {
|
||||
if (window.ipcRenderer) {
|
||||
console.log("Using Electron platform");
|
||||
const plaf = new ElectronPlatform();
|
||||
PlatformPeg.set(plaf);
|
||||
PlatformPeg.set(new ElectronPlatform());
|
||||
} else if (window.matchMedia('(display-mode: standalone)').matches) {
|
||||
console.log("Using PWA platform");
|
||||
PlatformPeg.set(new PWAPlatform());
|
||||
} else {
|
||||
console.log("Using Web platform");
|
||||
PlatformPeg.set(new WebPlatform());
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -44,7 +44,9 @@ import {randomString} from "matrix-js-sdk/src/randomstring";
|
||||
import {Action} from "matrix-react-sdk/src/dispatcher/actions";
|
||||
import {ActionPayload} from "matrix-react-sdk/src/dispatcher/payloads";
|
||||
import {showToast as showUpdateToast} from "matrix-react-sdk/src/toasts/UpdateToast";
|
||||
import { CheckUpdatesPayload } from 'matrix-react-sdk/src/dispatcher/payloads/CheckUpdatesPayload';
|
||||
import {CheckUpdatesPayload} from "matrix-react-sdk/src/dispatcher/payloads/CheckUpdatesPayload";
|
||||
import ToastStore from "matrix-react-sdk/src/stores/ToastStore";
|
||||
import GenericExpiringToast from "matrix-react-sdk/src/components/views/toasts/GenericExpiringToast";
|
||||
|
||||
const ipcRenderer = window.ipcRenderer;
|
||||
const isMac = navigator.platform.toUpperCase().includes('MAC');
|
||||
@@ -153,6 +155,10 @@ class SeshatIndexManager extends BaseEventIndexManager {
|
||||
return this._ipcCall('isEventIndexEmpty');
|
||||
}
|
||||
|
||||
async isRoomIndexed(roomId: string): Promise<boolean> {
|
||||
return this._ipcCall('isRoomIndexed', roomId);
|
||||
}
|
||||
|
||||
async commitLiveEvents(): Promise<void> {
|
||||
return this._ipcCall('commitLiveEvents');
|
||||
}
|
||||
@@ -193,6 +199,14 @@ class SeshatIndexManager extends BaseEventIndexManager {
|
||||
return this._ipcCall('getStats');
|
||||
}
|
||||
|
||||
async getUserVersion(): Promise<number> {
|
||||
return this._ipcCall('getUserVersion');
|
||||
}
|
||||
|
||||
async setUserVersion(version: number): Promise<void> {
|
||||
return this._ipcCall('setUserVersion', version);
|
||||
}
|
||||
|
||||
async deleteEventIndex(): Promise<void> {
|
||||
return this._ipcCall('deleteEventIndex');
|
||||
}
|
||||
@@ -228,13 +242,33 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
||||
rageshake.flush();
|
||||
});
|
||||
|
||||
ipcRenderer.on('ipcReply', this._onIpcReply.bind(this));
|
||||
ipcRenderer.on('update-downloaded', this.onUpdateDownloaded.bind(this));
|
||||
ipcRenderer.on('ipcReply', this._onIpcReply);
|
||||
ipcRenderer.on('update-downloaded', this.onUpdateDownloaded);
|
||||
|
||||
ipcRenderer.on('preferences', () => {
|
||||
dis.fire(Action.ViewUserSettings);
|
||||
});
|
||||
|
||||
ipcRenderer.on('userDownloadCompleted', (ev, {path, name}) => {
|
||||
const onAccept = () => {
|
||||
ipcRenderer.send('userDownloadOpen', {path});
|
||||
};
|
||||
|
||||
ToastStore.sharedInstance().addOrReplaceToast({
|
||||
key: `DOWNLOAD_TOAST_${path}`,
|
||||
title: _t("Download Completed"),
|
||||
props: {
|
||||
description: name,
|
||||
acceptLabel: _t("Open"),
|
||||
onAccept,
|
||||
dismissLabel: _t("Dismiss"),
|
||||
numSeconds: 10,
|
||||
},
|
||||
component: GenericExpiringToast,
|
||||
priority: 99,
|
||||
});
|
||||
});
|
||||
|
||||
// register OS-specific shortcuts
|
||||
if (isMac) {
|
||||
registerShortcut(Categories.NAVIGATION, {
|
||||
@@ -275,11 +309,15 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
||||
return this._ipcCall('getConfig');
|
||||
}
|
||||
|
||||
async onUpdateDownloaded(ev, {releaseNotes, releaseName}) {
|
||||
onUpdateDownloaded = async (ev, {releaseNotes, releaseName}) => {
|
||||
dis.dispatch<CheckUpdatesPayload>({
|
||||
action: Action.CheckUpdates,
|
||||
status: UpdateCheckStatus.Ready,
|
||||
});
|
||||
if (this.shouldShowUpdate(releaseName)) {
|
||||
showUpdateToast(await this.getAppVersion(), releaseName, releaseNotes);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
getHumanReadableName(): string {
|
||||
return 'Electron Platform'; // no translation required: only used for analytics
|
||||
@@ -426,7 +464,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
||||
});
|
||||
}
|
||||
|
||||
_onIpcReply(ev, payload) {
|
||||
_onIpcReply = (ev, payload) => {
|
||||
if (payload.id === undefined) {
|
||||
console.warn("Ignoring IPC reply with no ID");
|
||||
return;
|
||||
@@ -444,7 +482,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
||||
} else {
|
||||
callbacks.resolve(payload.reply);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
getEventIndexingManager(): BaseEventIndexManager | null {
|
||||
return this.eventIndexManager;
|
||||
@@ -500,4 +538,30 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
||||
|
||||
return handled;
|
||||
}
|
||||
|
||||
async getPickleKey(userId: string, deviceId: string): Promise<string | null> {
|
||||
try {
|
||||
return await this._ipcCall('getPickleKey', userId, deviceId);
|
||||
} catch (e) {
|
||||
// if we can't connect to the password storage, assume there's no
|
||||
// pickle key
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
async createPickleKey(userId: string, deviceId: string): Promise<string | null> {
|
||||
try {
|
||||
return await this._ipcCall('createPickleKey', userId, deviceId);
|
||||
} catch (e) {
|
||||
// if we can't connect to the password storage, assume there's no
|
||||
// pickle key
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
async destroyPickleKey(userId: string, deviceId: string): Promise<void> {
|
||||
try {
|
||||
await this._ipcCall('destroyPickleKey', userId, deviceId);
|
||||
} catch (e) {}
|
||||
}
|
||||
}
|
||||
|
||||
29
src/vector/platform/PWAPlatform.ts
Normal file
29
src/vector/platform/PWAPlatform.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
import WebPlatform from "./WebPlatform";
|
||||
|
||||
export default class PWAPlatform extends WebPlatform {
|
||||
setNotificationCount(count: number) {
|
||||
if (!navigator.setAppBadge) return super.setNotificationCount(count);
|
||||
if (this.notificationCount === count) return;
|
||||
this.notificationCount = count;
|
||||
|
||||
navigator.setAppBadge(count).catch(e => {
|
||||
console.error("Failed to update PWA app badge", e);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -183,7 +183,7 @@
|
||||
<div class="mx_HomePage_row">
|
||||
<div>
|
||||
<h2 id="step1_heading">Riot can't load</h2>
|
||||
<p>Something went wrong and riot was unable to load.</p>
|
||||
<p>Something went wrong and Riot was unable to load.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -589,8 +589,8 @@ describe('loading:', function() {
|
||||
|
||||
describe('Token login:', function() {
|
||||
it('logs in successfully', function() {
|
||||
localStorage.setItem("mx_hs_url", "https://homeserver");
|
||||
localStorage.setItem("mx_is_url", "https://idserver");
|
||||
localStorage.setItem("mx_sso_hs_url", "https://homeserver");
|
||||
localStorage.setItem("mx_sso_is_url", "https://idserver");
|
||||
loadApp({
|
||||
queryString: "?loginToken=secretToken",
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user