* fix crash on browsers that don't support Array.at ([\#9935](https://github.com/matrix-org/matrix-react-sdk/pull/9935)). Contributed by @andybalaam.

-----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEE6Vt2megLaKnq2aGaK6qbhVK9kEcFAmPIboARHHJlbGVhc2Vz
 QHJpb3QuaW0ACgkQK6qbhVK9kEf6nA//ajiHcHoVaKVof+CTAsQgNLrN+qoX43iC
 TgrQ2mg0G8ulee0u2ow6+0Xa5urfYhvJ/LQCvHEZXt0ZGizpIK7uWKggERgiWTwf
 f2tA+bKULHHuOz72a1Xi00r2pLWTIOI9A7Y0agNQXznJNPwZhrsSfmx+htUues3M
 LyApPyKXoJi7XfzOMpY+8d2s6Yb6idWWigf7nHO+eTxky6LC6W0Z1am2BrfJkotd
 WfIjR3H7p0JgyfPVsSzhE4J0zpneCduKHffkZKwxOz/eVcVNPnKYFxX0dlertap8
 hZllFy6nSHFN18p64pyhLplYkYpo6xbjAzWAcHd51M7Gkmj3GYXtLriTK3EljnfC
 Q2UcTKQRwPJHdmavxaZTiVoRt8QyI3/YKUT0uwk8eYlxGDE93zrxH5ikOJ/DkSQS
 sko9R3M1sbbtxhglhNQhp2Xz5pZIWcpGdMBA196f1lJd0DENR93MmC8N3URH066Q
 pKRPus17VOpw1A+JnZeni80j17thamHbg7g6o+R0IBn4NP4n1HaIaRpj36yTugix
 O3GAejNCNMaD3PxQqzwqdKlFdH44XeyvVXd8WpmWUGl+OWgPY7Vj2IYKikGZqWGR
 z/Xy3Ma+Nm2AbQgoIF6lQ1BgWTgfYsRCqSqRoaUXLmG55h4j37FRtloSybq8owkn
 TCImNSnVGs8=
 =hRNf
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQJNBAABCAA3FiEEUMS2jJrglzPzHXqk10PFDIthmEwFAmPJXHIZHGNvZGV3b3Jr
 c0BzdXBlcmNhYmxlLm9ubAAKCRDXQ8UMi2GYTB/RD/9yLeBqosrjrg1Pg537hVJW
 Uz0NMEV0pzli/AafQldxu73n0hEtURow08781Iufi6m4sbGJILjmlBOEgGREyj6C
 hZbfXFtP+6fQmUbnVu/NzV9AG7ZtoImL9EsfToGORfnt67P5nitb58IWRZwggVRf
 YD1Oq2zM7h5WRRcjpjwEv/TaCOIklxA6/7glfJeNI/DvznYB1/KHdkncGRH4hIk5
 EZ/3OpIZ/k9t8mR2XKxwaZM0zSvYAcBv8dupO67hISvKJPYPWe+G5LfBbvRE94Dh
 c42lmDthH/LOiNIYzZa7Ds/Q7qw3EM9GgL2vwfF5vqTwhk5xRT4ewCUEys8yC6YF
 5AtuokAaVP5ZyS/Q/98Y7poZPCOzbtigBwJraFeVe4OFp96q8bDFe+En7rp3sf5d
 YfZfURxLnNfMeAV47puiDvPDPIcJQhOm6Hom8x/fnaIJ+8nVmZxOUxGLGrKHjDMD
 PO58WNz7vJ3VxhZycnYcMn8Plou6C6+JbeODvaXA1pIygTHqBJiNQZzsqpuZcWik
 xuKyMb3OHDIy2Mue68qLkQ9y+Hz/fyqr0yRvBOvcj+LvfHx+DzZeq+LYmBJhOGPm
 39LtHC0XijniZoFpn93fJYiklEV9SSWE0xZkOtEAJr3LAkkYb97sCQzmJd+r3Wz+
 El7kxrfl8zK7lVjprYL9aw==
 =iETp
 -----END PGP SIGNATURE-----

Merge tag 'v1.11.19' into sc

* fix crash on browsers that don't support `Array.at` ([\#9935](https://github.com/matrix-org/matrix-react-sdk/pull/9935)). Contributed by @andybalaam.
This commit is contained in:
su-ex 2023-01-19 16:05:36 +01:00
commit 84cfb29654
12 changed files with 578 additions and 703 deletions

2
.git-blame-ignore-revs Normal file
View File

@ -0,0 +1,2 @@
# prettier
7921a6cbf86b035d2b0c1daecb4c24beaf5a5abc

View File

@ -1,3 +1,67 @@
Changes in [1.11.19](https://github.com/vector-im/element-web/releases/tag/v1.11.19) (2023-01-18)
=================================================================================================
## 🐛 Bug Fixes
* fix crash on browsers that don't support `Array.at` ([\#9935](https://github.com/matrix-org/matrix-react-sdk/pull/9935)). Contributed by @andybalaam.
Changes in [1.11.18](https://github.com/vector-im/element-web/releases/tag/v1.11.18) (2023-01-18)
=================================================================================================
## ✨ Features
* Switch threads on for everyone ([\#9879](https://github.com/matrix-org/matrix-react-sdk/pull/9879)).
* Make threads use new Unable to Decrypt UI ([\#9876](https://github.com/matrix-org/matrix-react-sdk/pull/9876)). Fixes #24060.
* Add edit and remove actions to link in RTE [Labs] ([\#9864](https://github.com/matrix-org/matrix-react-sdk/pull/9864)).
* Remove extensible events v1 experimental rendering ([\#9881](https://github.com/matrix-org/matrix-react-sdk/pull/9881)).
* Make create poll dialog scale better (PSG-929) ([\#9873](https://github.com/matrix-org/matrix-react-sdk/pull/9873)). Fixes #21855.
* Change RTE mode icons ([\#9861](https://github.com/matrix-org/matrix-react-sdk/pull/9861)).
* Device manager - prune client information events after remote sign out ([\#9874](https://github.com/matrix-org/matrix-react-sdk/pull/9874)).
* Check connection before starting broadcast ([\#9857](https://github.com/matrix-org/matrix-react-sdk/pull/9857)).
* Enable sent receipt for poll start events (PSG-962) ([\#9870](https://github.com/matrix-org/matrix-react-sdk/pull/9870)).
* Change clear notifications to have more readable copy ([\#9867](https://github.com/matrix-org/matrix-react-sdk/pull/9867)).
* combine search results when the query is present in multiple successive messages ([\#9855](https://github.com/matrix-org/matrix-react-sdk/pull/9855)). Fixes #3977. Contributed by @grimhilt.
* Disable bubbles for broadcasts ([\#9860](https://github.com/matrix-org/matrix-react-sdk/pull/9860)). Fixes #24140.
* Enable reactions and replies for broadcasts ([\#9856](https://github.com/matrix-org/matrix-react-sdk/pull/9856)). Fixes #24042.
* Improve switching between rich and plain editing modes ([\#9776](https://github.com/matrix-org/matrix-react-sdk/pull/9776)).
* Redesign the picture-in-picture window ([\#9800](https://github.com/matrix-org/matrix-react-sdk/pull/9800)). Fixes #23980.
* User on-boarding tasks now appear in a static order. ([\#9799](https://github.com/matrix-org/matrix-react-sdk/pull/9799)). Contributed by @GoodGuyMarco.
* Device manager - contextual menus ([\#9832](https://github.com/matrix-org/matrix-react-sdk/pull/9832)).
* If listening a non-live broadcast and changing the room, the broadcast will be paused ([\#9825](https://github.com/matrix-org/matrix-react-sdk/pull/9825)). Fixes #24078.
* Consider own broadcasts from other device as a playback ([\#9821](https://github.com/matrix-org/matrix-react-sdk/pull/9821)). Fixes #24068.
* Add link creation to rich text editor ([\#9775](https://github.com/matrix-org/matrix-react-sdk/pull/9775)).
* Add mark as read option in room setting ([\#9798](https://github.com/matrix-org/matrix-react-sdk/pull/9798)). Fixes #24053.
* Device manager - current device design and copy tweaks ([\#9801](https://github.com/matrix-org/matrix-react-sdk/pull/9801)).
* Unify notifications panel event design ([\#9754](https://github.com/matrix-org/matrix-react-sdk/pull/9754)).
* Add actions for integration manager to send and read certain events ([\#9740](https://github.com/matrix-org/matrix-react-sdk/pull/9740)).
* Device manager - design tweaks ([\#9768](https://github.com/matrix-org/matrix-react-sdk/pull/9768)).
* Change room list sorting to activity and unread first by default ([\#9773](https://github.com/matrix-org/matrix-react-sdk/pull/9773)). Fixes #24014.
* Add a config flag to enable the rust crypto-sdk ([\#9759](https://github.com/matrix-org/matrix-react-sdk/pull/9759)).
* Improve decryption error UI by consolidating error messages and providing instructions when possible ([\#9544](https://github.com/matrix-org/matrix-react-sdk/pull/9544)). Contributed by @duxovni.
* Honor font settings in Element Call ([\#9751](https://github.com/matrix-org/matrix-react-sdk/pull/9751)). Fixes #23661.
* Device manager - use deleteAccountData to prune device manager client information events ([\#9734](https://github.com/matrix-org/matrix-react-sdk/pull/9734)).
## 🐛 Bug Fixes
* Display rooms & threads as unread (bold) if threads have unread messages. ([\#9763](https://github.com/matrix-org/matrix-react-sdk/pull/9763)). Fixes #23907.
* Don't prefer STIXGeneral over the default font ([\#9711](https://github.com/matrix-org/matrix-react-sdk/pull/9711)). Fixes #23899.
* Use the same avatar colour when creating 1:1 DM rooms ([\#9850](https://github.com/matrix-org/matrix-react-sdk/pull/9850)). Fixes #23476.
* Fix space lock icon size ([\#9854](https://github.com/matrix-org/matrix-react-sdk/pull/9854)). Fixes #24128.
* Make calls automatically disconnect if the widget disappears ([\#9862](https://github.com/matrix-org/matrix-react-sdk/pull/9862)). Fixes #23664.
* Fix emoji in RTE editing ([\#9827](https://github.com/matrix-org/matrix-react-sdk/pull/9827)).
* Fix export with attachments on formats txt and json ([\#9851](https://github.com/matrix-org/matrix-react-sdk/pull/9851)). Fixes #24130. Contributed by @grimhilt.
* Fixed empty `Content-Type` for encrypted uploads ([\#9848](https://github.com/matrix-org/matrix-react-sdk/pull/9848)). Contributed by @K3das.
* Fix sign-in instead link on password reset page ([\#9820](https://github.com/matrix-org/matrix-react-sdk/pull/9820)). Fixes #24087.
* The seekbar now initially shows the current position ([\#9796](https://github.com/matrix-org/matrix-react-sdk/pull/9796)). Fixes #24051.
* Fix: Editing a poll will silently change it to a closed poll ([\#9809](https://github.com/matrix-org/matrix-react-sdk/pull/9809)). Fixes #23176.
* Make call tiles look less broken in the right panel ([\#9808](https://github.com/matrix-org/matrix-react-sdk/pull/9808)). Fixes #23716.
* Prevent unnecessary m.direct updates ([\#9805](https://github.com/matrix-org/matrix-react-sdk/pull/9805)). Fixes #24059.
* Fix checkForPreJoinUISI for thread roots ([\#9803](https://github.com/matrix-org/matrix-react-sdk/pull/9803)). Fixes #24054.
* Snap in PiP widget when content changed ([\#9797](https://github.com/matrix-org/matrix-react-sdk/pull/9797)). Fixes #24050.
* Load RTE components only when RTE labs is enabled ([\#9804](https://github.com/matrix-org/matrix-react-sdk/pull/9804)).
* Ensure that events are correctly updated when they are edited. ([\#9789](https://github.com/matrix-org/matrix-react-sdk/pull/9789)).
* When stopping a broadcast also stop the playback ([\#9795](https://github.com/matrix-org/matrix-react-sdk/pull/9795)). Fixes #24052.
* Prevent to start two broadcasts at the same time ([\#9744](https://github.com/matrix-org/matrix-react-sdk/pull/9744)). Fixes #23973.
* Correctly handle limited sync responses by resetting the thread timeline ([\#3056](https://github.com/matrix-org/matrix-js-sdk/pull/3056)). Fixes vector-im/element-web#23952.
* Fix failure to start in firefox private browser ([\#3058](https://github.com/matrix-org/matrix-js-sdk/pull/3058)). Fixes vector-im/element-web#24216.
Changes in [1.11.17](https://github.com/vector-im/element-web/releases/tag/v1.11.17) (2022-12-21) Changes in [1.11.17](https://github.com/vector-im/element-web/releases/tag/v1.11.17) (2022-12-21)
================================================================================================= =================================================================================================

View File

@ -22,6 +22,13 @@ module.exports = {
"@babel/plugin-proposal-object-rest-spread", "@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-proposal-optional-chaining", "@babel/plugin-proposal-optional-chaining",
"@babel/plugin-proposal-nullish-coalescing-operator", "@babel/plugin-proposal-nullish-coalescing-operator",
// transform logical assignment (??=, ||=, &&=). preset-env doesn't
// normally bother with these (presumably because all the target
// browsers support it natively), but they make our webpack version (or
// something downstream of babel, at least) fall over.
"@babel/plugin-proposal-logical-assignment-operators",
"@babel/plugin-syntax-dynamic-import", "@babel/plugin-syntax-dynamic-import",
"@babel/plugin-transform-runtime", "@babel/plugin-transform-runtime",
], ],

View File

@ -51,49 +51,28 @@ in that order.
Unless otherwise specified, the following applies to all code: Unless otherwise specified, the following applies to all code:
1. 120 character limit per line. Match existing code in the file if it is using a lower guide. 1. Files must be formatted with Prettier.
2. A tab/indentation is 4 spaces. 2. 120 character limit per line. Match existing code in the file if it is using a lower guide.
3. Newlines are Unix. 3. A tab/indentation is 4 spaces.
4. A file has a single empty line at the end. 4. Newlines are Unix.
5. Lines are trimmed of all excess whitespace, including blank lines. 5. A file has a single empty line at the end.
6. Long lines are broken up for readability. 6. Lines are trimmed of all excess whitespace, including blank lines.
7. Long lines are broken up for readability.
## TypeScript / JavaScript {#typescript-javascript} ## TypeScript / JavaScript {#typescript-javascript}
1. Write TypeScript. Turn JavaScript into TypeScript when working in the area. 1. Write TypeScript. Turn JavaScript into TypeScript when working in the area.
2. Use named exports. 2. Use named exports.
3. Break long lines to appear as follows: 3. Use semicolons for block/line termination.
```typescript
// Function arguments
function doThing(arg1: string, arg2: string, arg3: string): boolean {
return !!arg1 && !!arg2 && !!arg3;
}
// Calling a function
doThing("String 1", "String 2", "String 3");
// Reduce line verbosity when possible/reasonable
doThing("String1", "String 2", "A much longer string 3");
// Chaining function calls
something
.doThing()
.doOtherThing()
.doMore()
.somethingElse((it) => useIt(it));
```
4. Use semicolons for block/line termination.
1. Except when defining interfaces, classes, and non-arrow functions specifically. 1. Except when defining interfaces, classes, and non-arrow functions specifically.
5. When a statement's body is a single line, it may be written without curly braces, so long as the body is placed on 4. When a statement's body is a single line, it must be written without curly braces, so long as the body is placed on
the same line as the statement. the same line as the statement.
```typescript ```typescript
if (x) doThing(); if (x) doThing();
``` ```
6. Blocks for `if`, `for`, `switch` and so on must have a space surrounding the condition, but not 5. Blocks for `if`, `for`, `switch` and so on must have a space surrounding the condition, but not
within the condition. within the condition.
```typescript ```typescript
@ -102,55 +81,17 @@ Unless otherwise specified, the following applies to all code:
} }
``` ```
7. Mixing of logical operands requires brackets to explicitly define boolean logic. 6. lowerCamelCase is used for function and variable naming.
7. UpperCamelCase is used for general naming.
```typescript 8. Interface names should not be marked with an uppercase `I`.
if ((a > b && b > c) || d < e) return true; 9. One variable declaration per line.
``` 10. If a variable is not receiving a value on declaration, its type must be defined.
8. Ternaries use the same rules as `if` statements, plus the following:
```typescript
// Single line is acceptable
const val = a > b ? doThing() : doOtherThing();
// Multiline is also okay
const val = a > b ? doThing() : doOtherThing();
// Use brackets when using multiple conditions.
// Maximum 3 conditions, prefer 2 or less.
const val = a > b && b > c ? doThing() : doOtherThing();
```
9. lowerCamelCase is used for function and variable naming.
10. UpperCamelCase is used for general naming.
11. Interface names should not be marked with an uppercase `I`.
12. One variable declaration per line.
13. If a variable is not receiving a value on declaration, its type must be defined.
```typescript ```typescript
let errorMessage: Optional<string>; let errorMessage: Optional<string>;
``` ```
14. Objects, arrays, enums and so on must have each line terminated with a comma: 11. Objects can use shorthand declarations, including mixing of types.
```typescript
const obj = {
prop: 1,
else: 2,
};
const arr = ["one", "two"];
enum Thing {
Foo,
Bar,
}
doThing("arg1", "arg2");
```
15. Objects can use shorthand declarations, including mixing of types.
```typescript ```typescript
{ {
@ -161,7 +102,7 @@ Unless otherwise specified, the following applies to all code:
{ room, prop: this.prop } { room, prop: this.prop }
``` ```
16. Object keys should always be non-strings when possible. 12. Object keys should always be non-strings when possible.
```typescript ```typescript
{ {
@ -171,23 +112,23 @@ Unless otherwise specified, the following applies to all code:
} }
``` ```
17. Explicitly cast to a boolean. 13. Explicitly cast to a boolean.
```typescript ```typescript
!!stringVar || Boolean(stringVar); !!stringVar || Boolean(stringVar);
``` ```
18. Use `switch` statements when checking against more than a few enum-like values. 14. Use `switch` statements when checking against more than a few enum-like values.
19. Use `const` for constants, `let` for mutability. 15. Use `const` for constants, `let` for mutability.
20. Describe types exhaustively (ensure noImplictAny would pass). 16. Describe types exhaustively (ensure noImplictAny would pass).
1. Notable exceptions are arrow functions used as parameters, when a void return type is 1. Notable exceptions are arrow functions used as parameters, when a void return type is
obvious, and when declaring and assigning a variable in the same line. obvious, and when declaring and assigning a variable in the same line.
21. Declare member visibility (public/private/protected). 17. Declare member visibility (public/private/protected).
22. Private members are private and not prefixed unless required for naming conflicts. 18. Private members are private and not prefixed unless required for naming conflicts.
1. Convention is to use an underscore or the word "internal" to denote conflicted member names. 1. Convention is to use an underscore or the word "internal" to denote conflicted member names.
2. "Conflicted" typically refers to a getter which wants the same name as the underlying variable. 2. "Conflicted" typically refers to a getter which wants the same name as the underlying variable.
23. Prefer readonly members over getters backed by a variable, unless an internal setter is required. 19. Prefer readonly members over getters backed by a variable, unless an internal setter is required.
24. Prefer Interfaces for object definitions, and types for parameter-value-only declarations. 20. Prefer Interfaces for object definitions, and types for parameter-value-only declarations.
1. Note that an explicit type is optional if not expected to be used outside of the function call, 1. Note that an explicit type is optional if not expected to be used outside of the function call,
unlike in this example: unlike in this example:
@ -204,9 +145,9 @@ Unless otherwise specified, the following applies to all code:
} }
``` ```
25. Variables/properties which are `public static` should also be `readonly` when possible. 21. Variables/properties which are `public static` should also be `readonly` when possible.
26. Interface and type properties are terminated with semicolons, not commas. 22. Interface and type properties are terminated with semicolons, not commas.
27. Prefer arrow formatting when declaring functions for interfaces/types: 23. Prefer arrow formatting when declaring functions for interfaces/types:
```typescript ```typescript
interface Test { interface Test {
@ -214,13 +155,13 @@ Unless otherwise specified, the following applies to all code:
} }
``` ```
28. Prefer a type definition over an inline type. For example, define an interface. 24. Prefer a type definition over an inline type. For example, define an interface.
29. Always prefer to add types or declare a type over the use of `any`. Prefer inferred types 25. Always prefer to add types or declare a type over the use of `any`. Prefer inferred types
when they are not `any`. when they are not `any`.
1. When using `any`, a comment explaining why must be present. 1. When using `any`, a comment explaining why must be present.
30. `import` should be used instead of `require`, as `require` does not have types. 26. `import` should be used instead of `require`, as `require` does not have types.
31. Export only what can be reused. 27. Export only what can be reused.
32. Prefer a type like `Optional<X>` (`type Optional<T> = T | null | undefined`) instead 28. Prefer a type like `Optional<X>` (`type Optional<T> = T | null | undefined`) instead
of truly optional parameters. of truly optional parameters.
1. A notable exception is when the likelihood of a bug is minimal, such as when a function 1. A notable exception is when the likelihood of a bug is minimal, such as when a function
@ -238,12 +179,12 @@ Unless otherwise specified, the following applies to all code:
} }
``` ```
33. There should be approximately one interface, class, or enum per file unless the file is named 29. There should be approximately one interface, class, or enum per file unless the file is named
"types.ts", "global.d.ts", or ends with "-types.ts". "types.ts", "global.d.ts", or ends with "-types.ts".
1. The file name should match the interface, class, or enum name. 1. The file name should match the interface, class, or enum name.
34. Bulk functions can be declared in a single file, though named as "foo-utils.ts" or "utils/foo.ts". 30. Bulk functions can be declared in a single file, though named as "foo-utils.ts" or "utils/foo.ts".
35. Imports are grouped by external module imports first, then by internal imports. 31. Imports are grouped by external module imports first, then by internal imports.
36. File ordering is not strict, but should generally follow this sequence: 32. File ordering is not strict, but should generally follow this sequence:
1. Licence header 1. Licence header
2. Imports 2. Imports
3. Constants 3. Constants
@ -258,16 +199,16 @@ Unless otherwise specified, the following applies to all code:
5. Protected and abstract functions 5. Protected and abstract functions
6. Public/private functions 6. Public/private functions
7. Public/protected/private static functions 7. Public/protected/private static functions
37. Variable names should be noticeably unique from their types. For example, "str: string" instead 33. Variable names should be noticeably unique from their types. For example, "str: string" instead
of "string: string". of "string: string".
38. Use double quotes to enclose strings. You may use single quotes if the string contains double quotes. 34. Use double quotes to enclose strings. You may use single quotes if the string contains double quotes.
```typescript ```typescript
const example1 = "simple string"; const example1 = "simple string";
const example2 = 'string containing "double quotes"'; const example2 = 'string containing "double quotes"';
``` ```
39. Prefer async-await to promise-chaining 35. Prefer async-await to promise-chaining
```typescript ```typescript
async function () { async function () {
@ -313,45 +254,21 @@ Inheriting all the rules of TypeScript, the following additionally apply:
10. Interdependence between stores should be kept to a minimum. Break functions and constants out to utilities 10. Interdependence between stores should be kept to a minimum. Break functions and constants out to utilities
if at all possible. if at all possible.
11. A component should only use CSS class names in line with the component name. 11. A component should only use CSS class names in line with the component name.
1. When knowingly using a class name from another component, document it. 1. When knowingly using a class name from another component, document it.
12. Break components over multiple lines like so:
```typescript 12. Curly braces within JSX should be padded with a space, however properties on those components should not.
function render() {
return <Component prop1="test" prop2={this.state.variable} />;
// or
return <Component prop1="test" prop2={this.state.variable} />;
// or if children are needed (infer parens usage)
return (
<Component prop1="test" prop2={this.state.variable}>
{_t("Short string here")}
</Component>
);
return (
<Component prop1="test" prop2={this.state.variable}>
{_t("Longer string here")}
</Component>
);
}
```
13. Curly braces within JSX should be padded with a space, however properties on those components should not.
See above code example. See above code example.
14. Functions used as properties should either be defined on the class or stored in a variable. They should not 13. Functions used as properties should either be defined on the class or stored in a variable. They should not
be inline unless mocking/short-circuiting the value. be inline unless mocking/short-circuiting the value.
15. Prefer hooks (functional components) over class components. Be consistent with the existing area if unsure 14. Prefer hooks (functional components) over class components. Be consistent with the existing area if unsure
which should be used. which should be used.
1. Unless the component is considered a "structure", in which case use classes. 1. Unless the component is considered a "structure", in which case use classes.
16. Write more views than structures. Structures are chunks of functionality like MatrixChat while views are 15. Write more views than structures. Structures are chunks of functionality like MatrixChat while views are
isolated components. isolated components.
17. Components should serve a single, or near-single, purpose. 16. Components should serve a single, or near-single, purpose.
18. Prefer to derive information from component properties rather than establish state. 17. Prefer to derive information from component properties rather than establish state.
19. Do not use `React.Component::forceUpdate`. 18. Do not use `React.Component::forceUpdate`.
## Stylesheets (\*.pcss = PostCSS + Plugins) ## Stylesheets (\*.pcss = PostCSS + Plugins)

View File

@ -1,6 +1,6 @@
{ {
"name": "element-web", "name": "element-web",
"version": "1.11.17", "version": "1.11.19",
"description": "A feature-rich client for Matrix.org", "description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.", "author": "New Vector Ltd.",
"repository": { "repository": {
@ -60,8 +60,8 @@
"gfm.css": "^1.1.2", "gfm.css": "^1.1.2",
"jsrsasign": "^10.5.25", "jsrsasign": "^10.5.25",
"katex": "^0.16.0", "katex": "^0.16.0",
"matrix-js-sdk": "23.0.0", "matrix-js-sdk": "23.1.0",
"matrix-react-sdk": "3.63.0", "matrix-react-sdk": "3.64.1",
"matrix-widget-api": "^1.1.1", "matrix-widget-api": "^1.1.1",
"react": "17.0.2", "react": "17.0.2",
"react-dom": "17.0.2", "react-dom": "17.0.2",
@ -138,7 +138,7 @@
"mkdirp": "^1.0.4", "mkdirp": "^1.0.4",
"modernizr": "^3.12.0", "modernizr": "^3.12.0",
"node-fetch": "^2.6.7", "node-fetch": "^2.6.7",
"optimize-css-assets-webpack-plugin": "^5.0.4", "optimize-css-assets-webpack-plugin": "^6.0.0",
"postcss": "^8.4.16", "postcss": "^8.4.16",
"postcss-easings": "^2.0.0", "postcss-easings": "^2.0.0",
"postcss-hexrgba": "2.0.1", "postcss-hexrgba": "2.0.1",
@ -166,7 +166,7 @@
"webpack": "^4.46.0", "webpack": "^4.46.0",
"webpack-cli": "^3.3.12", "webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.11.2", "webpack-dev-server": "^3.11.2",
"worker-loader": "^2.0.0", "worker-loader": "^3.0.0",
"worklet-loader": "^2.0.0", "worklet-loader": "^2.0.0",
"yaml": "^2.0.1" "yaml": "^2.0.1"
}, },

3
src/i18n/strings/br.json Normal file
View File

@ -0,0 +1,3 @@
{
"Open": "Digeriñ"
}

View File

@ -26,5 +26,7 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s uzas specialajn funkciojn de retumilo, kiujn via nuna retumilo ne subtenas.", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s uzas specialajn funkciojn de retumilo, kiujn via nuna retumilo ne subtenas.",
"Powered by Matrix": "Povigata de Matrix", "Powered by Matrix": "Povigata de Matrix",
"Use %(brand)s on mobile": "Uzi %(brand)s poŝtelefone", "Use %(brand)s on mobile": "Uzi %(brand)s poŝtelefone",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Malcentralizita kaj ĉifrita babilejo; kunlaboro danke al $matrixLogo" "Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Malcentralizita kaj ĉifrita babilejo; kunlaboro danke al $matrixLogo",
"%(appName)s: %(browserName)s on %(osName)s": "%(appName)s: %(browserName)s sur %(osName)s",
"%(brand)s Desktop: %(platformName)s": "%(brand)s Labortablo: %(platformName)s"
} }

View File

@ -10,5 +10,12 @@
"Open": "Բացել", "Open": "Բացել",
"Unable to load config file: please refresh the page to try again.": "Ֆայլի ներմուծման սխալ․ խնդրում ենք թարմացնել էջը և նորից փորձել։", "Unable to load config file: please refresh the page to try again.": "Ֆայլի ներմուծման սխալ․ խնդրում ենք թարմացնել էջը և նորից փորձել։",
"Invalid JSON": "Չաշխատող JSON", "Invalid JSON": "Չաշխատող JSON",
"Your Element is misconfigured": "Ձեր Element֊ը սխալ է կարգավորված" "Your Element is misconfigured": "Ձեր Element֊ը սխալ է կարգավորված",
"Powered by Matrix": "Սնուցվում է Matrixի կողմից",
"I understand the risks and wish to continue": "Ես գնահատում եմ ռիսկերն ու ցանկանում եմ շարունակել",
"Create Account": "Ստեղծել օգտահաշիվ",
"Sign In": "Մուտք գործել",
"Go to element.io": "Այցելեք element.io",
"Go to your browser to complete Sign In": "Հետ գնացեք բրաուզեր մուտք գործելն ավարտելու համար",
"Download Completed": "Ներբեռնումն ավարտված է"
} }

View File

@ -20,5 +20,13 @@
"I understand the risks and wish to continue": "ฉันเข้าใจความเสี่ยง และดำเนินการต่อ", "I understand the risks and wish to continue": "ฉันเข้าใจความเสี่ยง และดำเนินการต่อ",
"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> เพื่อประสิทธิภาพการใช้งานที่ดีที่สุด.", "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> เพื่อประสิทธิภาพการใช้งานที่ดีที่สุด.",
"Your browser can't run %(brand)s": "เบราว์เซอร์ของคุณไม่สามารถใช้งาน %(brand)s ได้", "Your browser can't run %(brand)s": "เบราว์เซอร์ของคุณไม่สามารถใช้งาน %(brand)s ได้",
"Unsupported browser": "เบราว์เซอร์ไม่รองรับ" "Unsupported browser": "เบราว์เซอร์ไม่รองรับ",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "การกระจายศูนย์, แชทที่เข้ารหัส &amp; ขับเคลื่อนโดย $matrixLogo",
"%(appName)s: %(browserName)s on %(osName)s": "%(appName)s: %(browserName)s บน %(osName)s",
"%(brand)s Desktop: %(platformName)s": "%(brand)s เดสก์ทอป: %(platformName)s",
"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.": "คุณสามารถใช้เบราว์เซอร์ปัจจุบันของคุณต่อไปได้ แต่คุณสมบัติบางอย่างหรือทั้งหมดอาจไม่ทำงาน และรูปลักษณ์ของแอปพลิเคชันอาจไม่ถูกต้อง.",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s ใช้คุณลักษณะขั้นสูงของเบราว์เซอร์ซึ่งไม่รองรับโดยเบราว์เซอร์ปัจจุบันของคุณ.",
"Use %(brand)s on mobile": "ใช้ %(brand)s บนมือถือ",
"Go to your browser to complete Sign In": "ไปที่เบราว์เซอร์ของคุณเพื่อลงชื่อเข้าใช้ให้เสร็จสมบูรณ์.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "การกำหนดค่าไม่ถูกต้อง: สามารถระบุได้เพียงอย่างใดอย่างหนึ่ง default_server_config, default_server_name, or default_hs_url."
} }

View File

@ -224,7 +224,7 @@ describe("loading:", function () {
// Pass the liveliness checks // Pass the liveliness checks
httpBackend.when("GET", "/versions").respond(200, { versions: ["r0.4.0"] }); httpBackend.when("GET", "/versions").respond(200, { versions: ["r0.4.0"] });
httpBackend.when("GET", "/api/v1").respond(200, {}); httpBackend.when("GET", "/_matrix/identity/v2").respond(200, {});
return sleep(1) return sleep(1)
.then(async () => { .then(async () => {
@ -274,7 +274,7 @@ describe("loading:", function () {
// Pass the liveliness checks // Pass the liveliness checks
httpBackend.when("GET", "/versions").respond(200, { versions: ["r0.4.0"] }); httpBackend.when("GET", "/versions").respond(200, { versions: ["r0.4.0"] });
httpBackend.when("GET", "/api/v1").respond(200, {}); httpBackend.when("GET", "/_matrix/identity/v2").respond(200, {});
return awaitLoginComponent(matrixChat) return awaitLoginComponent(matrixChat)
.then(async () => { .then(async () => {
@ -286,7 +286,7 @@ describe("loading:", function () {
// the only outstanding request should be a GET /login // the only outstanding request should be a GET /login
// (in particular there should be no /register request for // (in particular there should be no /register request for
// guest registration). // guest registration).
const allowedRequests = ["/_matrix/client/r0/login", "/versions", "/api/v1"]; const allowedRequests = ["/_matrix/client/r0/login", "/versions", "/_matrix/identity/v2"];
for (const req of httpBackend.requests) { for (const req of httpBackend.requests) {
if (req.method === "GET" && allowedRequests.find((p) => req.path.endsWith(p))) { if (req.method === "GET" && allowedRequests.find((p) => req.path.endsWith(p))) {
continue; continue;

View File

@ -236,6 +236,11 @@ module.exports = (env, argv) => {
{ {
test: /\.worker\.ts$/, test: /\.worker\.ts$/,
loader: "worker-loader", loader: "worker-loader",
options: {
// Prevent bundling workers since CSP forbids loading them
// from another origin.
filename: "[hash].worker.js",
},
}, },
{ {
test: /\.(ts|js)x?$/, test: /\.(ts|js)x?$/,

982
yarn.lock

File diff suppressed because it is too large Load Diff