mirror of
https://github.com/SchildiChat/element-web.git
synced 2024-10-01 01:26:12 -04:00
* 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:
commit
84cfb29654
2
.git-blame-ignore-revs
Normal file
2
.git-blame-ignore-revs
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# prettier
|
||||||
|
7921a6cbf86b035d2b0c1daecb4c24beaf5a5abc
|
64
CHANGELOG.md
64
CHANGELOG.md
@ -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)
|
||||||
=================================================================================================
|
=================================================================================================
|
||||||
|
|
||||||
|
@ -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",
|
||||||
],
|
],
|
||||||
|
179
code_style.md
179
code_style.md
@ -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)
|
||||||
|
|
||||||
|
10
package.json
10
package.json
@ -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
3
src/i18n/strings/br.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"Open": "Digeriñ"
|
||||||
|
}
|
@ -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 & collaboration powered by $matrixLogo": "Malcentralizita kaj ĉifrita babilejo; kunlaboro danke al $matrixLogo"
|
"Decentralised, encrypted chat & 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"
|
||||||
}
|
}
|
||||||
|
@ -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": "Ներբեռնումն ավարտված է"
|
||||||
}
|
}
|
||||||
|
@ -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 & collaboration powered by $matrixLogo": "การกระจายศูนย์, แชทที่เข้ารหัส & ขับเคลื่อนโดย $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."
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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?$/,
|
||||||
|
Loading…
Reference in New Issue
Block a user