* Fix room list roving treeview
New TooltipTarget & TextWithTooltip were not roving-accessible
* Fix programmatic focus management in roving tab index not triggering onFocus handler
* Fix toolbar no longer handling left & right arrows
* Fix roving tab index focus tracking on interactive element like context menu trigger
* Fix thread list context menu roving
* add comment
* fix comment
* Fix handling vertical arrows in the wrong direction
* iterate PR
* delint
* tidy up
Also add a type of OOBData... possibly this should be in the js-sdk,
but threepid invites themselves have a type in react-sdk so it can
live alongside it I guess (also I'm not entirely sure we actually
use it anymore...)
Room header use DecoratedRoomAvatar instead of manual e2eIcon overlay
move e2eIcon next to it instead of private padlock
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Previously we were creating a notification state whenever we needed one, which was leading to hundreds of listeners even on a small account. To ease the burden, and reduce the load of having to wake so many listeners, we now record a single listener for each tag ID and room combination.
This commit also introduces a number of utilities to make future notification work a bit of an easier transition, such as the `isX` and `hasX` getters on the new NotificationState abstract class. Similarly, "snapshots" have been added to reduce code duplication between different kinds of states checking for updates.
The ListNotificationState is now heavily tied into the store which offers it to help reuse the cache of room notification states.
Fixes https://github.com/vector-im/riot-web/issues/14370