Because RoomViewStore used two slightly different conditions, the Call.presented flag could get out of sync with the viewingCall flag. But these should effectively be the same thing.
This was causing some subtle bugs if you would join a call, switch to another room, and then click back into the call room via the room list. The call would be visible but not know that it's presented, causing:
1. The hangup sound to get cut off at the end of the call
2. The widget to disappear immediately without offering a 'reconnect' button if you lose connectivity
* feat: implement `ExtrasApi#setRoomIdsForSpace`
* fix: message reply with multiple room views
* fix: message edition when multiple rooms are displayed
* test: check that the view room action is not dispatch when replying
* test: check that the view room action is not dispatch when editing
* refactor: use `ExtraApis#getVisibleRoomBySpaceKey` instead of `ExtraApis#setRoomIdsForSpace`
* test: update tests to use `getVisibleRoomBySpaceKey`
* Remove unreachable code
`view_last_screen` is never used.
* Remove unused action `user_activity_started`
Nothing listens to this, so it's pointless.
* Symbolic constant for `Action.UserActivity`
* Define symbolic constants for more `Action`s
Constants for some actions that are emitted by `Lifecycle`
* Add voiceOnly options.
* tweaks
* Nearly working demo
* Lots of minor fixes
* Better working version
* remove unused payload
* bits and pieces
* Cleanup based on new hints
* Simple refactor for skipLobby (and remove returnToLobby)
* Tidyup
* Remove unused tests
* Update tests for voice calls
* Add video room support.
* Add a test for video rooms
* tidy
* remove console log line
* lint and tests
* Bunch of fixes
* Fixes
* Use correct title
* make linter happier
* Update tests
* cleanup
* Drop only
* update snaps
* Document
* lint
* Update snapshots
* Remove duplicate test
* add brackets
* fix jest
* Module API experiments
* Move ResizerNotifier into SDKContext
so we don't have to pass it into RoomView
* Add the MultiRoomViewStore
* Make RoomViewStore able to take a roomId prop
* Different interface to add space panel items
A bit less flexible but probably simpler and will help keep things
actually consistent rather than just allowing modules to stick any
JSX into the space panel (which means they also have to worry about
styling if they *do* want it to be consistent).
* Allow space panel items to be updated
and manage which one is selected, allowing module "spaces" to be
considered spaces
* Remove fetchRoomFn from SpaceNotificationStore
which didn't really seem to have any point as it was only called from
one place
* Switch to using module api via .instance
* Fairly awful workaround
to actually break the dependency nightmare
* Add test for multiroomviewstore
* add test
* Make room names deterministic
So the tests don't fail if you add other tests or run them individually
* Add test for builtinsapi
* Update module api
* RVS is not needed as prop anymore
Since it's passed through context
* Add roomId to prop
* Remove RoomViewStore from state
This is now accessed through class field
* Fix test
* No need to pass RVS from LoggedInView
* Add RoomContextType
* Implement new builtins api
* Add tests
* Fix import
* Fix circular dependency issue
* Fix import
* Add more tests
* Improve comment
* room-id is optional
* Update license
* Add implementation for AccountDataApi
* Add implementation for Room
* Add implementation for ClientApi
* Create ClientApi in Api.ts
* Write tests
* Use nullish coalescing assignment
* Implement openRoom in NavigationApi
* Write tests
* Add implementation for StoresApi
* Write tests
* Fix circular dependency
* Add comments in lieu of type
and fix else block
* Change to class field
---------
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
* Simple refactor for skipLobby (and remove returnToLobby)
* Tidyup
* Remove unused tests
* Add video room support.
* Add a test for video rooms
* tidy
* Document
* Fix room joining over federation not specifying vias or using aliases
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Be consistent with viaServers
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Simplify modules
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Only consider canAskToJoin on 403 as per spec
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused helper which I only just added =(
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add support for Module API 1.3.0
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add missing import
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>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix import
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Bump module API
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update module API and remove jest stub
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test mocks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* types
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add labs option for "share history on invite"
* Set `acceptSharedHistory` when joining a room
* set `shareEncryptedHistory` when sending an invite
* Update src/i18n/strings/en_EN.json
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* 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>
* 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 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.
* 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>
* Support the mark as unread flag
* Add mark as unread menu option
and make clering notifications also clear the unread flag
* Mark as read on viewing room
* Tests
* Remove random import
* Don't show mark as unread for historical rooms
* Fix tests & add test for menu option
* Test RoomNotificationState updates on unread flag change
* Test it doesn't update on other room account data
* New icon for mark as unread
* Add analytics events for mark as (un)read
* Bump to new analytics-events package
* Read from both stable & unstable prefixes
* Cast to boolean before checking
to avoid setting state unnecessarily
* Typo
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Doc external interface (and the rest at the same time)
* Doc & rename unread market set function
* Doc const exports
* Remove listener on destroy
* Add playwright test
* Clearer language, hopefully
* Move comment
* Add reference to the MSC
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Expand on function doc
* Remove empty beforeEach
* Rejig badge logic a little and add tests
* Fix basdges to not display dots in room sublists again
and hopefully rename the forceDot option to something that better
indicates what it does, and add tests.
* Remove duplicate license header (?)
* Missing word (several times...)
* Incorporate PR suggestion on badge type switch
* Better description in doc comment
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update other doc comments in the same way
* Remove duplicate quote
* Use quotes consistently
* Better test name
* c+p fail
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Refactor ElementCall to use the widget lobby.
- expose skip lobby
- use the widget.data to build the widget url
Signed-off-by: Timo K <toger5@hotmail.de>
* Use shiftKey click to skip the lobby
Signed-off-by: Timo K <toger5@hotmail.de>
* remove Lobby component
Signed-off-by: Timo K <toger5@hotmail.de>
* update tests + remove EW lobby related tests
Signed-off-by: Timo K <toger5@hotmail.de>
* remove lobby device button tests
Signed-off-by: Timo K <toger5@hotmail.de>
* i18n
Signed-off-by: Timo K <toger5@hotmail.de>
* use voip participant label
Signed-off-by: Timo K <toger5@hotmail.de>
* update tests
Signed-off-by: Timo K <toger5@hotmail.de>
* fix rounded corners in pip
Signed-off-by: Timo K <toger5@hotmail.de>
* allow joining call in legacy room header (without banner)
Signed-off-by: Timo K <toger5@hotmail.de>
* Introduce new connection states for calls.
And use them for integrated lobby.
Signed-off-by: Timo K <toger5@hotmail.de>
* New room header call join
Fix broken top container element call.
Signed-off-by: Timo K <toger5@hotmail.de>
* i18n
Signed-off-by: Timo K <toger5@hotmail.de>
* Fix closing element call in lobby view.
(should destroy call if there the user never managed to connect (not clicked join in lobby)
Signed-off-by: Timo K <toger5@hotmail.de>
* all cases for connection state
Signed-off-by: Timo K <toger5@hotmail.de>
* add correct LiveContentSummary labels
Signed-off-by: Timo K <toger5@hotmail.de>
* Theme widget loading (no rounded corner)
destroy call when switching room while a call is loading.
Signed-off-by: Timo K <toger5@hotmail.de>
* temp
Signed-off-by: Timo K <toger5@hotmail.de>
* usei view room dispatcher instead of emitter
Signed-off-by: Timo K <toger5@hotmail.de>
* tidy up
Signed-off-by: Timo K <toger5@hotmail.de>
* returnToLobby + remove StartCallView
Signed-off-by: Timo K <toger5@hotmail.de>
* comment cleanup
Signed-off-by: Timo K <toger5@hotmail.de>
* disconnect ongoing calls before making widget sticky.
Signed-off-by: Timo K <toger5@hotmail.de>
* linter + jitsi as videoChannel
Signed-off-by: Timo K <toger5@hotmail.de>
* stickyPromise type
Signed-off-by: Timo K <toger5@hotmail.de>
* fix legacy call (jistsi, cisco, bbb) reopen
when clicking call button
Signed-off-by: Timo K <toger5@hotmail.de>
* fix tests and connect resolves
Signed-off-by: Timo K <toger5@hotmail.de>
* fix "waits for messaging when connecting" test
Signed-off-by: Timo K <toger5@hotmail.de>
* Allow to skip awaiting Call session events.
This option is used in tests to spare mocking the
events emitted when EC updates the room state
Signed-off-by: Timo K <toger5@hotmail.de>
* add sticky test
Signed-off-by: Timo K <toger5@hotmail.de>
* add test for looby tile rendering
Signed-off-by: Timo K <toger5@hotmail.de>
* fix flaky test
Signed-off-by: Timo K <toger5@hotmail.de>
* add reconnect after disconnect test (video room)
Signed-off-by: Timo K <toger5@hotmail.de>
* add shift click test to call toast
Signed-off-by: Timo K <toger5@hotmail.de>
* test for allowVoipWithNoMedia in widget url
Signed-off-by: Timo K <toger5@hotmail.de>
* fix e2e tests to search for the right element
Signed-off-by: Timo K <toger5@hotmail.de>
* destroy call after test so next test does not fail
Signed-off-by: Timo K <toger5@hotmail.de>
* new call test (connection failed)
Signed-off-by: Timo K <toger5@hotmail.de>
* reset to real timers
Signed-off-by: Timo K <toger5@hotmail.de>
* dont use skipSessionAwait for tests
Signed-off-by: Timo K <toger5@hotmail.de>
* code quality (sonar)
Signed-off-by: Timo K <toger5@hotmail.de>
* refactor call.disconnect tests (dont use skipSessionAwait)
Signed-off-by: Timo K <toger5@hotmail.de>
* miscellaneous cleanup
Signed-off-by: Timo K <toger5@hotmail.de>
* only send call notify after the call has been joined (not when just opening the lobby)
Signed-off-by: Timo K <toger5@hotmail.de>
* update call notify tests to expect notify on connect.
Not on widget creation.
Signed-off-by: Timo K <toger5@hotmail.de>
* Update playwright/e2e/room/room-header.spec.ts
Co-authored-by: Robin <robin@robin.town>
* Update src/components/views/voip/CallView.tsx
Co-authored-by: Robin <robin@robin.town>
* review
rename connect -> start
isVideoRoom not dependant on feature flags
rename allOtherCallsDisconnected -> disconnectAllOtherCalls
Signed-off-by: Timo K <toger5@hotmail.de>
* check for EC widget
Signed-off-by: Timo K <toger5@hotmail.de>
* dep array
Signed-off-by: Timo K <toger5@hotmail.de>
* rename in spyOn
Signed-off-by: Timo K <toger5@hotmail.de>
---------
Signed-off-by: Timo K <toger5@hotmail.de>
Co-authored-by: Robin <robin@robin.town>
* Force `initialEventId` in `RoomView`
* Remove Force `initialEventId` in `RoomView`
* Add e2e tests to verify we memorize the timeline position
* Fill `viewRoomOpts` in `viewRoom`
* Reset jest mock in sliding sync test
* Add comments
* Switch to importing TypedEventEmitter from main js-sdk export
* Switch to importing js-sdk/matrix in cypress
* Remove duplicated imports
* Fix lint:js-fix to run prettier last otherwise ESLint --fix may cause a mess
* Add lint rule
* Switch to importing models/Room from main js-sdk export
* Fix cypress-axe import
* Fix more imports
* Fix cypress-axe import
* Fix duplicated lint rule
* Apply `strictNullChecks` to `src/components/views/room_settings/*`
* Restore tsconfig.json
* Conform more code to `strictNullChecks`
* Iterate
* Update matrix-widget-api
* Conform more code to `strictNullChecks`
* Provide a more detailed error message than "No known servers"
Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Fix PR since file was refactored
Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Fix formatting
Signed-off-by: Aaron Raimist <aaron@raim.ist>
* lint
Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Update src/stores/RoomViewStore.tsx
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Add example identifiers and a more detailed explanation
Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Lint
Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Lint
Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Revert back to original wording (except s/alias/address)
Alias was a better name imo but Element calls them addresses now so changed to be consistent.
Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Prettier
Signed-off-by: Aaron Raimist <aaron@raim.ist>
* Fix ts error
* Add snapshot test
* Check the Modal props
* Add test case to reach quality gate
---------
Signed-off-by: Aaron Raimist <aaron@raim.ist>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Florian Duros <florianduros@element.io>