* Strict typechecking fixes for Base/Member/Avatar
Update the core avatar files to pass `--strict --noImplicitAny` typechecks.
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Add tests for Base/Member/Avatar
More thoroughly test the core avatar files. Not necessarily the most thorough,
but an improvement.
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Extract TextAvatar from BaseAvatar
Extracted the fallback/textual avatar into its own component.
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Use standard HTML for non-image avatars
Firefox users with `resistFingerprinting` enabled were seeing random noise
for rooms and users without avatars. There's no real reason to use data
URLs to present flat colors.
This converts non-image avatars to inline blocks with background colors.
See https://github.com/vector-im/element-web/issues/23936
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Have pills use solid backgrounds rather than colored images
Similar to room and member avatars, pills now use colored pseudo-elements
rather than background images.
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
---------
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
* Add Stores and StoresContext and use it in MatrixChat and RoomView
Added a new kind of class:
- Add God object `Stores` which will hold refs to all known stores and the `MatrixClient`. This object is NOT a singleton.
- Add `StoresContext` to hold onto a ref of `Stores` for use inside components.
`StoresContext` is created via:
- Create `Stores` in `MatrixChat`, assigning the `MatrixClient` when we have one set. Currently sets the RVS to `RoomViewStore.instance`.
- Wrap `MatrixChat`s `render()` function in a `StoresContext.Provider` so it can be used anywhere.
`StoresContext` is currently only used in `RoomView` via the following changes:
- Remove the HOC, which redundantly set `mxClient` as a prop. We don't need this as `RoomView` was using the client from `this.context`.
- Change the type of context accepted from `MatrixClientContext` to `StoresContext`.
- Modify alllll the places where `this.context` is used to interact with the client and suffix `.client`.
- Modify places where we use `RoomViewStore.instance` and replace them with `this.context.roomViewStore`.
This makes `RoomView` use a non-global instance of RVS.
* Linting
* SDKContext and make client an optional constructor arg
* Move SDKContext to /src/contexts
* Inject all RVS deps
* Linting
* Remove reset calls; deep copy the INITIAL_STATE to avoid test pollution
* DI singletons used in RoomView; DI them in RoomView-test too
* Initial RoomViewStore.instance after all files are imported to avoid cyclical deps
* Lazily init stores to allow for circular dependencies
Rather than stores accepting a list of other stores in their constructors,
which doesn't work when A needs B and B needs A, make new-style stores simply
accept Stores. When a store needs another store, they access it via `Stores`
which then lazily constructs that store if it needs it. This breaks the
circular dependency at constructor time, without needing to introduce
wiring diagrams or any complex DI framework.
* Delete RoomViewStore.instance
Replaced with Stores.instance.roomViewStore
* Linting
* Move OverridableStores to test/TestStores
* Rejig how eager stores get made; don't automatically do it else tests break
* Linting
* Linting and review comments
* Fix new code to use Stores.instance
* s/Stores/SdkContextClass/g
* Update docs
* Remove unused imports
* Update src/stores/RoomViewStore.tsx
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove empty c'tor to make sonar happy
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* extract preventDefaultWrapper into utils
* add click handling to beacon list item
* add click handling to dialog sidebar
* focus in on beacons when clicked in list
* stylelint
* fussy import ordering
* test beacon focusing in beaocnviewdialog
* redact beacon locations on redaction
* redact beacon locations on beacon info redaction
* fussy import ordering
* use real fake redaction in beaconbody test
* handle beacon location events in ForwardDialog
* add transformer for forwarded events in MessageContextMenu
* remove canForward
* update snapshots for beacon model change
* add comments
* fix bad copy pasted test
* add test for beacon locations
* navigate to live location tile from left panel live warning
Signed-off-by: Kerry Archibald <kerrya@element.io>
* navigate to beacon tile from room live share warning
Signed-off-by: Kerry Archibald <kerrya@element.io>
* add cursor
Signed-off-by: Kerry Archibald <kerrya@element.io>
* add maxzoom to map fit bounds
Signed-off-by: Kerry Archibald <kerrya@element.io>
* take snapshot of bounds at center on dialog open
Signed-off-by: Kerry Archibald <kerrya@element.io>
* open a dialog with map centered around first beacon
Signed-off-by: Kerry Archibald <kerrya@element.io>
* add room member markers
Signed-off-by: Kerry Archibald <kerrya@element.io>
* fix unmount issue in smart marker
Signed-off-by: Kerry Archibald <kerrya@element.io>
* dont throw on no more live locations
Signed-off-by: Kerry Archibald <kerrya@element.io>
* cursor on beacon maps
Signed-off-by: Kerry Archibald <kerrya@element.io>
* fussy import ordering
Signed-off-by: Kerry Archibald <kerrya@element.io>
* test dialog opening from beacon body
Signed-off-by: Kerry Archibald <kerrya@element.io>
* test beaconmarker
Signed-off-by: Kerry Archibald <kerrya@element.io>
* test BeaconViewDialog
Signed-off-by: Kerry Archibald <kerrya@element.io>
* comment
Signed-off-by: Kerry Archibald <kerrya@element.io>
* use unstable prefix for wk tile_Server
Signed-off-by: Kerry Archibald <kerrya@element.io>
* unstable prefix for new m.tile_server use in test
Signed-off-by: Kerry Archibald <kerrya@element.io>
* expose wire errors in more useful way
* add wire error state to room live share warning bar
Signed-off-by: Kerry Archibald <kerrya@element.io>
* stylelint
Signed-off-by: Kerry Archibald <kerrya@element.io>
* add types to getLabel helper
Signed-off-by: Kerry Archibald <kerrya@element.io>
* display live share warning only when geolocation is happening
Signed-off-by: Kerry Archibald <kerrya@element.io>
* kill beacons when geolocation is unavailable or permissions denied
Signed-off-by: Kerry Archibald <kerrya@element.io>
* polish and comments
Signed-off-by: Kerry Archibald <kerrya@element.io>