* Optimize mx_RoomView_myReadMarker
- Replace the compound selector with a type selector
- Nest the type selector in "mx_RoomView_myReadMarker_container"
* Conform the style rules to the naming policy
Including "container" in a class name is redundant as our naming policy tells that a string followed by an underscore (_) represents a container if it contains an element.
* Run prettier
* Replace `mx_RoomView_myReadMarker hr` with `mx_RoomView_myReadMarker`
- Remove a unit
- Hide hr's parent (mx_RoomView_myReadMarker) on Percy snapshots
* Change the class name from `mx_RoomView_myReadMarker` to `mx_MessagePanel_myReadMarker`
The read marker is specified on MessagePanel.tsx, and should be named so to avoid confusion.
- Create _MessagePanel.pcss for the style rules of MessagePanel
* Update permalinks.spec.ts
* Conform more of the codebase to `strictNullChecks`
* Iterate
* Iterate
* Iterate
* Iterate
* Conform more of the codebase to `strictNullChecks`
* Iterate
* Update record key
* Conform more of the codebase to `strictNullChecks`
* Conform more of the codebase to `strictNullChecks`
* Fix types
* Conform more of the codebase to `strictNullChecks`
* Conform more of the codebase to `strictNullChecks`
* Test MessagePanel rendering with hidden events
* Cache the results of shouldShowEvent in MessagePanel
* Combine an event and its shouldShow info into a single object
* Minor code quality updates for ScrollPanel
and removal of unused function `scrollRelative` in MessagePanel (discovered when changing the scrollRelative types in ScrollPanel).
Changes:
* Clean up logging a bit, make it clearer
* Remove dead code
* Add extra types for tsc --strict compliance (not complete)
* Fix IDE warnings around spelling and missing awaits/promise return values
* Modernize usage of logging
* Fix more tsc --strict errors while we're here
* It's a good thing we have a linter
* Fix even more strict errors
* Fix getRelationsForEvent tsc strictness
* Use shared type for GetRelationsForEvent
* Fix lint
* Add alternative type
* getRelationsForEvent is not required
* Relations are optional
* Reactions are optional
* We expect relations in these tests
* Add more protection if the eventID is not defined
* Allow null too
* Better test typing
* User ID is not necessary unless something is selected
* It's okay to [].includes(null)
* Null is as good as undefined here
* Null or undefined is good here
* We have some expectations for the tests
* The room and user can be undefined too
* Protec
* Reactions are optional
* Try match signatures
* Null or undefined
* More null or undefined
* Protec
* Fix typo (wrong variable)
* Remove optional params
See https://github.com/matrix-org/matrix-react-sdk/pull/9558#discussion_r1017515913
* Fix up last maaaaybe relevant lint
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* 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
* Use updates stable relations from js-sdk
* Relations is now accessible on the Room instead
* Reuse more existing code and ditch confusing `isThreadRelation`
* Fix last usage of removed `isThreadRelation`
* Update tests to match removal of isThreadRelation
* Tweak method naming to closer match spec
* Fix missing method name change
* Don't consider threads for breaking continuation until they've actually been created
* Update tests
* Make hasThreadSummary null thread safe
* Apply feedback from pr review
* Fix: Remove jittery timeline scrolling after jumping to an event
* Fix: Remove onUserScroll handler and merge it with onScroll
* Fix: Reset scrollIntoView state earlier
Co-authored-by: Janne Mareike Koschinski <jannemk@element.io>
We move all of the event tile rendering into a factory manager for a couple reasons:
1. `EventTile` is uncomfortably large for a file
2. A simple map isn't possible anymore (can't convert the existing maps like `eventTileTypes` to `Record<string, typeof React.Component>` because the types are actually incompatible)
So, by having a factory manager place we can more easily render components without having to use `getComponent()` all over the place, and without lying to ourselves about how simple the event rendering path is.
This change also moves quite a bit of the rendering path into the new `EventTileFactory` file so it can be easily seen by future developers.