* Embed Element Call into Element Web packages
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>
* Pass rageshakeSubmitUrl & posthogApiHost to EC widget
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
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>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use @vector-im/element-call-embedded
* Only pass posthog params to EC if Analytics is enabled
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test mock
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update EC params to match https://github.com/element-hq/element-call/pull/3089
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update to latest element-call package
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* yarn.lock
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update to element-call-embedded@ v0.9.0-rc.1
* Gate Sentry params behind analytics consent
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update to element-call-embedded v0.9.0-rc.4
* Update Element Call embedded to 0.9.0 release
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Hugh Nimmo-Smith <hughns@element.io>
* Unread filter should match rooms marked as unread
* Re-insert room into skip list on account data
So that filters are re-calculated when rooms are marked as unread.
* Write test
* feat(notification state): add clearer methods, documentation and deprecation
* test(room notification state): add tests for new attributes
* doc: more explicit documentation for `hasUnreadCount`
* doc: add link to `RoomNotificationState.isMention` in `hasMentions` doc
* refactor: change `isSilent` to `hasAnyNotificationOrActivity`
* refactor: add `invited` to `determineUnreadState` and use it in `NotificationState` & `RoomNotificationState`
* test: update `RoomNotificationState` test to use `invited`
* test: update other tests to add `invited`
* refactor: remove count check in `isNotification`
* Experimental SSS
Working branch to get SSS functional on element-web.
Requires https://github.com/matrix-org/matrix-js-sdk/pull/4400
* Adjust tests to use new behaviour
* Remove well-known proxy URL lookup; always use native
This is actually required for SSS because otherwise it would use
the proxy over native support.
* Linting
* Debug logging
* Control the race condition when swapping between rooms
* Dont' filter by space as synapse doesn't support it
* Remove SS code related to registering lists and managing ranges
- Update the spidering code to spider all the relevant lists.
- Add canonical alias to the required_state to allow room name calcs to work.
Room sort order is busted because we don't yet look at `bump_stamp`.
* User bumpStamp if it is present
* Drop initial room load from 20 per list to 10
* Half the batch size to trickle more quickly
* Prettier
* prettier on tests too
* Remove proxy URL & unused import
* Hopefully fix tests to assert what the behaviour is supposed to be
* Move the singleton to the manager tyo fix import loop
* Very well, code, I will remove you
Why were you there in the first place?
* Strip out more unused stuff
* Fix playwright test
Seems like this lack of order updating unless a room is selected
was just always a bug with both regular and non-sliding sync. I
have no idea how the test passed on develop because it won't run.
* Fix test to do maybe what it was supposed to do... possibly?
* Remove test for old pre-simplified sliding sync behaviour
* Unused import
* Remove sliding sync proxy & test
I was wrong about what this test was asserting, it was suposed
to assert that notification dots aren't shown (because SS didn't
support them somehow I guess) but they are fine in SSS so the test
is just no longer relevant.
* Remove now pointless credentials
* Remove subscription removal as SSS doesn't do that
* Update tests
* add test
* Switch to new labs flag & break if old labs flag is enabled
* Remove unused import & fix test
* Fix other test
* Remove name & description from old labs flag
as they're not displayed anywhere so not useful
* Remove old sliding sync option
by making it not a feature
* Add back unread nindicator test but inverted
and minus the bit about disabling notification which surely would have
defeated the original point anyway?
* Reinstate test for room_subscriptions
...and also make tests actually use sliding sync
* Use UserFriendlyError
* Remove empty constructor
* Remove unrelated changes
* Unused import
* Fix import
* Avoid moving import
---------
Co-authored-by: Kegan Dougal <7190048+kegsay@users.noreply.github.com>
* Add `type` property to Sorter
So that we can uniquely identify any given sorting algorithm.
* Add a getter for the active sort algorithm
* Define a setting to store the sorting algorithm
* Add a method to resort the list of rooms
- Just one method where you specify the sorting algorithm by type.
- Persist the new sorting algorithm using SettingsStore.
* On startup, use preferred sorter
* Add tests
* Implement the favourite filter
* Make the room node capable of dealing with filters
- Holds data to indicate which filters apply
- Provides method to check if a given set of filters apply to this node
- Provides a method to recalculate which filters apply
* Wire up the filtering mechanism in skip list
* Use filters in the store
* Remove else
* Use a set instead of map
* Avoid destroying calls until they are hidden from the UI
We often want calls to exist even when no more participants are left in the MatrixRTC session. So, we should avoid destroying calls as long as they're being presented in the UI; this means that the user has an intent to either join the call or continue looking at an error screen, and we shouldn't interrupt that interaction.
The RoomViewStore is now what takes care of creating and destroying calls, rather than the CallView. In general it seems kinda impossible to safely create and destroy model objects from React lifecycle hooks, so moving this responsibility to a store seemed appropriate and resolves existing issues with calls in React strict mode.
* Wait for a close action before closing a call
This creates a distinction between the user hanging up and the widget being ready to close, which is useful for allowing Element Call to show error screens when disconnected from the call, for example.
* Don't expect a 'close' action in video rooms
These use the returnToLobby option and are expected to remain visible when the user leaves the call.
* Add method to await space store setup
Otherwise, the room list store will get incorrect information about
spaces and thus will produce an incorrect roomlist.
* Implement a way to filter by active space
Implement a way to filter by active space
* Fix broken jest tests
* Fix typo
* Rename `isReady` to `storeReadyPromise`
* Fix mock in test
* Update the store on action
* Add more tests
* Add newlines between case blocks
* Make code more readable
- Make if/else more consistent
- Add comment on findAndAddRoom()
* Add more tests
* Remove redundant code
On a timeline action, we return early if payload.room is falsy.
So then why do we need to retry fetching the room?
I think this can be removed but will ask others if there's some
conext I'm missing.
* Fix test
* Remove more redundant code
* Add more tests
* Explain intention in comment
* Emit only once even when adding multiple rooms
* Add missing tsdoc
* Implement enough of the new store to get a list of rooms
* Make it possible to swap sorting algorithm
* Don't attach to window object
We don't want the store to be created if the labs flag is off
* Remove the store class
Probably best to include this PR with the minimal vm implmentation
* Create a new room list store that wraps around the skip list
* Create a minimal view model
* Fix CI
* Add some basic tests for the store
* Write more tests
* Add some jsdoc comments
* Add more documentation
* Add more docs
* Implement a skip list for storing rooms
This data structure stores rooms in a given sorted order and allows for
very fast insertions and deletions.
* Export function to get last timestamp of room
* Write tests for the skip list
* Implement enough of the new store to get a list of rooms
* Make it possible to swap sorting algorithm
* Fix comment
* Don't attach to window object
We don't want the store to be created if the labs flag is off
* Remove the store class
Probably best to include this PR with the minimal vm implmentation
* feat(new room list)!: hide Favourites and People meta spaces when the new room list is enabled
* test(space store): add testcase for new labs flag
* feat(quick settings): hide pin to sidebar and more options and add extra margin
* Construct history on setCard
So that back buttons are always shown in the right panel
* Check card state to ensure operation is atomic
* Fix tests
* Fix lint
* Remove null case
* Fix broken test
* Make themed widgets reflect the effective theme
So that widgets such as Element Call will show up in the right theme even if the app is set to match the system theme.
* Remove debug log line
* Switch OIDC primarily to new `/auth_metadata` API
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Simplify the world
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>
* Add commercial licence and update config files
* Update license in headers
* Revert "Update license in headers"
This reverts commit 7ed7949485.
* Update only spdx id
* Remove LicenseRef- from package.json
LicenseRef- no longer allowed in npm v3 package.json
This fixes the warning in the logs and failing build check.
* Factor out crypto setup process into a store
To make components pure and avoid react 18 dev mode problems due
to components making requests when mounted.
* fix test
* test for the store
* Add comment
* Remove abandoned Voice Broadcasts labs flag
Any existing voice broadcasts will be shown as a series of voice messages which will sequence play as normal
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove dead code
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This is no longer needed as the right panel always corresponds to the currently viewed room/space only.
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>
* 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.
* Refactor feeding of events to widgets
This is a pure refactor with (hopefully) no behavior changes.
* Feed events to widgets as they are decrypted (even if out of order)
The code that feeds events to widgets tries to enforce that only events from the end of the timeline will be passed through. This is to prevent old, irrelevant events from being passed to widgets as the timeline is back-filled. However, since encrypted events need to be decrypted asynchronously, it's not possible to feed them to a widget in a strictly linear order without introducing some kind of blocking or unreliable delivery. This code has been dropping events when they're decrypted out of order, which we consider to be an undesirable behavior.
The solution provided here is that, to reflect the asynchronous nature of decryption, encrypted events that arrive at the end of the timeline will be fed to a widget whenever they finish decrypting, even if this means feeding them out of order. For now we're not aware of any widgets that care about knowing the exact order of events in the timeline, but if such a need reveals itself later, we can explore adding ordering information to this part of the widget API.
* Add braces to if