As part of the effort to make room state more reliable, we're looking at changing how state is communicated to widgets. Rather than passing all state events from the timeline through (and forcing the widget to assume that they belong to the server's view of the room state), let's try passing only those state events through that we believe actually belong to the server's view of the room state. When combined with a matrix-js-sdk that supports MSC4222, this improves the reliability of state tracking for widgets.
We would like to later explore a solution that has a separate 'state update' widget action in addition to the generic 'incoming timeline event' widget action, to make the widget API better reflect the shape of the data sources that drive it (like the sync responses of Simplified Sliding Sync or MSC4222).
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in RoomView
* Add `isRoomEncrypted` to room
* Update e2eStatus and urlPreview when isRoomEncrypted is computed
* Fix e2e test
* Add tests when user verification change
* Reduced abusive timeout in e2e test
* Remove Twemoji SBIX font in favour of COLRv0
as it is supported everywhere we need it
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused mock
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use `CryptoApi.getKeyBackupInfo` instead of deprecated `MatrixClient.getKeyBackupVersion`
* Review changes
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* PoC implementation for is_animated m.image flag
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update MSC reference
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* display a warning when an unverified user's identity changes
* use Compound and make comments into doc comments
* refactor to use functional component
* split into multiple hooks
* apply minor changes from review
* use Crypto API to determine if room is encrypted
* apply changes from review
* change initialisation status to a tri-state rather than a boolean
* fix more race conditions, and apply changes from review
* apply changes from review and switch to using counter for detecting races
* Remove outdated comment
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* fix test
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Swap out Twitter link for Mastodon on auth footer
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots & screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
`setState` now has different timings so we cannot assume the state changes are available immediately and must await them
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Rework `UrlPreviewSettings` to use `MatrixClient.CryptoApi.isEncryptionEnabledInRoom`
* Handle loading state
* Update `@vector-im/compound-web` to have `InlineSpinner`
* Use `InlineSpinner` instead of a loading text.
* Add `asyncFilter`
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `MemberListStore.tsx`
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `EventIndex.tsx`
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `SendMessageComposer.tsx`
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `ScalarMessaging.ts`
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `RolesRoomSettingsTab.tsx`
* Add reject doc to `asyncFilter`
* Reverse `MemberListStore.loadMembers` condition
* Remove async for `ScalarMessaging.ts`
* Display permission section only after `isEncrypted` is computed
* Display composer only after `isEncrypted` is computed
* Revert "Display composer only after `isEncrypted` is computed"
This reverts commit 4d4e037391.
* Revert "Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `SendMessageComposer.tsx`"
This reverts commit 6bf06da02c.
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `DeviceListener.ts`
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `Searching.ts`
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `SlidingSyncManager.ts`
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `EncryptionEvent.tsx`
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `ReportEventDialog.tsx`
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `RoomNotifications.tsx`
* Fix MessagePanel-test.tsx
* ReplaceReplace `MatrixCient..isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `shouldSkipSetupEncryption.ts`
* Add missing `await`
* Use `Promise.any` instead of `asyncSome`
* Add `asyncSomeParallel`
* Use `asyncSomeParallel` instead of `asyncSome`
* Allow tab completing users in brackets
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Account for range offsets when tab completing to not replace unrelated characters
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove stale _LegacyRoomHeader.pcss and icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* De-duplicate icons using Compound Design Tokens
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove stale _LegacyRoomHeader.pcss and icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Ensure legacy header styles are not used by HTML export
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots & snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update type and usage of window.matrixChat to be better React 18 friendly
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Make modules import async to make the file testable
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
setSigningOutDeviceIds was adding the same device ID twice, and also possibly using an old reference to the value when updating it
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace `MatrixClient.isRoomEncrypted` by `MatrixClient.CryptoApi.isEncryptionEnabledInRoom` in `useIsEncrypted`
* Catch error
* Return `null` when computed
* Use `useRoomState` & `useAsyncMemo`
* Use new `CrytoApi.restoreKeyBackup` & `CrytoApi.restoreKeyBackupFromPassprhase` api
* Use new `CrytoApi.restoreKeyBackup` api in `SetupEncryptionStore`
* Add tests to `RestoreKeyBackupDialog`
This code originally held an array of refs. But these refs were unset
just before sorting leading to errors.
For the fix, I've used a callback ref to add/remove the DOM elements
to/from the array in state. This way there's nothing that could possibly
mutate just before sort.