* 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
* 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
* Fix cypress-axe import
* Fix cypress-axe import
* muted-to-the-bottom POC
* split muted rooms in natural algorithm
* add previous event to account data dispatch
* add muted to notification state
* sort muted rooms to the bottom
* only split muted rooms when sorting is RECENT
* remove debugs
* use RoomNotifState better
* add default notifications test util
* test getChangedOverrideRoomPushRules
* remove file
* test roomudpate in roomliststore
* unit test ImportanceAlgorithm
* strict fixes
* test recent x importance with muted rooms
* unit test NaturalAlgorithm
* test naturalalgorithm with muted rooms
* strict fixes
* comments
* add push rules test utility
* strict fixes
* more strict
* tidy comment
* document previousevent on account data dispatch event
* simplify (?) room mute rule utilities, comments
* remove debug
* Tests for RoomNotificationStateStore emitting events
* Support dynamic room predecessors in RoomNotificationStateStore
* Remove unused arguments from emit call.
UPDATE_STATUS_INDICATOR is used in:
* SpacePanel
* MatrixChat
* RoomHeaderButtons
but these arguments are not used in any of those places. Remove them so
when I refactor I don't have to make up values for them.
* Fix broken test (wrong expected args to emit)
UPDATE_STATUS_INDICATOR is used in:
* SpacePanel
* MatrixChat
* RoomHeaderButtons
but these arguments are not used in any of those places. Remove them so
when I refactor I don't have to make up values for them.
* Update the RoomNotificationStore whenever the predecessor labs flag changes
* Fix type errors
* Fix other tests that trigger our new watcher
* Add tests for unread notification facilities
Add some tests to guarantee some consistency in `useUnreadNotifications` and
`RoomNotificationState`.
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Add RoomNotifs#determineUnreadState
Intended as a singular replacement for the divergent implementations before.
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Unify room unread state determination
Have both the class-based facility and the hook use the new unified logic in
`RoomNotifs#determineUnreadState`.
Addresses https://github.com/vector-im/element-web/issues/24229
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
---------
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Pass an explicit client into `RoomNotifs.getRoomNotifsState`, rather than
relying on `MatrixClientPeg`. This resolves a race condition where we have a
component which thinks it is using a particular component, but
`MatrixClientPeg` has been updated.
* Changed ListNotificationState to store room ids
ListNotificationState stores a reference to a rooms array which is later
used for comparing the stored array with new arrays. However, the
comparison may fail since the stored array can be changed outside the
class. This PR proposes to instead store only the room ids, which
hopefully allows to avoid the issue by copying the room ids into
a new array, while still being performant.
Signed-off-by: Arne Wilken arnepokemon@yahoo.de
* Change ListNotificationState to shallow clone rooms
Instead of using room ids like in the previous commit,
shallow clone the rooms array instead.
Signed-off-by: Arne Wilken arnepokemon@yahoo.de
Co-authored-by: Robin <robin@robin.town>
* Listen for and update the notification state when they change
* Remove unnecessary listeners: justify each listener left remaining
* Update removeListener too
* Improve accessibility and testability of Tooltip
Adding a role to Tooltip was motivated by React Testing Library's
reliance on accessibility-related attributes to locate elements.
* Make the ReadyWatchingStore constructor safer
The ReadyWatchingStore constructor previously had a chance to
immediately call onReady, which was dangerous because it was potentially
calling the derived class's onReady at a point when the derived class
hadn't even finished construction yet. In normal usage, I guess this
never was a problem, but it was causing some of the tests I was writing
to crash. This is solved by separating out the onReady call into a start
method.
* Rename 1:1 call components to 'LegacyCall'
to reflect the fact that they're slated for removal, and to not clash
with the new Call code.
* Refactor VideoChannelStore into Call and CallStore
Call is an abstract class that currently only has a Jitsi
implementation, but this will make it easy to later add an Element Call
implementation.
* Remove WidgetReady, ClientReady, and ForceHangupCall hacks
These are no longer used by the new Jitsi call implementation, and can
be removed.
* yarn i18n
* Delete call map entries instead of inserting nulls
* Allow multiple active calls and consolidate call listeners
* Fix a race condition when creating a video room
* Un-hardcode the media device fallback labels
* Apply misc code review fixes
* yarn i18n
* Disconnect from calls more politely on logout
* Fix some strict mode errors
* Fix another updateRoom race condition