Commit graph

41 commits

Author SHA1 Message Date
kegsay
e946674df3
Store refactor: use non-global stores in components (#9293)
* 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>
2022-10-19 13:07:03 +01:00
Michael Telatynski
9050ae4bb7
Fix possible soft crash from a race condition in space hierarchies (#9254)
* Fix possible soft crash from a race condition in space hierarchies

* Improve typing
2022-09-08 08:17:55 +00:00
Michael Telatynski
d0d91599a9
Fix soft crash around space hierarchy changing between spaces (#9191) 2022-08-16 14:39:10 +00:00
Johannes Marbach
0d100cbbce
Render HTML topics in rooms on space home (#8939)
* Render HTML topics in rooms on space home

Signed-off-by: Johannes Marbach <johannesm@element.io>

* Add type annotations

Signed-off-by: Johannes Marbach <johannesm@element.io>

* Remove superfluous conditional check

Signed-off-by: Johannes Marbach <johannesm@element.io>
2022-07-01 15:01:18 -04:00
Michael Telatynski
f3f14afbbf
Move spaces tests from Puppeteer to Cypress (#8645)
* Move spaces tests from Puppeteer to Cypress

* Add missing fixture

* Tweak synapsedocker to not double error on a docker failure

* Fix space hierarchy loading race condition

Fixes https://github.com/matrix-org/element-web-rageshakes/issues/10345

* Fix race condition when creating public space with url update code

* Try Electron once more due to perms issues around clipboard

* Try set browser permissions properly

* Try to enable clipboard another way

* Try electron again

* Try electron again again

* Switch to built-in cypress feature for file uploads

* Mock clipboard instead

* TMPDIR ftw?

* uid:gid pls

* Clipboard tests can now run on any browser due to mocking

* Test Enter as well as button for space creation

* Make the test actually work

* Update cypress/support/util.ts

Co-authored-by: Eric Eastwood <erice@element.io>

Co-authored-by: Eric Eastwood <erice@element.io>
2022-05-26 10:19:00 +01:00
Michael Weimann
7ed3089434 Improve tooltip positioning
Signed-off-by: Michael Weimann <michaelw@matrix.org>
2022-05-12 14:05:55 +02:00
Michael Telatynski
964c60d086
Apply corrections identified by SonarQube (#8457) 2022-05-03 22:04:37 +01:00
Travis Ralston
d5ed1eb66e Step 8.3: Convert RoomViewStore to a more modern singleton for imports 2022-03-28 14:02:31 -06:00
Suguru Hirahara
d92977df9e
Make rooms and spaces list responsive (#8088) 2022-03-24 08:50:02 +00:00
Suguru Hirahara
ed6a371616
Fix buttons alignment of Space list header (#8047) 2022-03-14 09:07:36 +00:00
Šimon Brandner
df591ee835
Make everything use the KeyBindingManager (#7907) 2022-02-28 16:05:52 +00:00
Michael Telatynski
e762a6947d
Fix bug with useRoomHierarchy tight-looping loadMore on error (#7893) 2022-02-24 22:52:04 +00:00
Michael Telatynski
c257bc3f7a
Prefer RoomStateEvent.Update where possible as it fires far less (#7878) 2022-02-24 14:39:25 +00:00
Michael Telatynski
658590e5bc
More posthog tracking around joining rooms and room search (#7807) 2022-02-17 18:03:27 +00:00
Michael Telatynski
0d6ef76605
Add analytics for the ViewRoom action (#7666) 2022-02-10 14:29:55 +00:00
Michael Telatynski
30e80aa87d
Null guard space hierarchy (#7729) 2022-02-07 13:48:35 +00:00
Michael Telatynski
ec6c1b8272
Fix RoomViewStore forgetting some details of a view room call (#7512) 2022-01-12 13:12:28 -07:00
Michael Telatynski
f389324571
Show error if could not load space hierarchy (#7399) 2021-12-17 10:36:52 +00:00
Michael Telatynski
a057ec18ca
Don't keep spinning if joining space child failed (#7129) 2021-11-12 15:45:14 +00:00
Michael Telatynski
5ad3261cb2
Implement more meta-spaces (#7077) 2021-11-11 13:07:41 +00:00
Michael Telatynski
27e16362b6
Make join button on space hierarchy action in the background (#7041) 2021-10-27 15:24:31 +01:00
Michael Telatynski
be0fa6da7b
Fix removing a room from a Space and interaction with m.space.parent (#6944) 2021-10-25 14:06:00 +01:00
Michael Telatynski
ead2a5152f
Add decoration to space hierarchy for tiles which have already been j… (#6969) 2021-10-25 11:40:06 +01:00
Michael Telatynski
5dfe53920c Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/fix/19246 2021-10-07 13:20:06 +01:00
Michael Telatynski
e470d7d030 Make use of MatrixClient::getRoomUpgradeHistory 2021-10-07 13:19:51 +01:00
Michael Telatynski
79f3348986 Simplify and improve useRoomHierarchy hook 2021-10-06 10:27:16 +01:00
Michael Telatynski
fa800796c7 Respect tombstones in locally known rooms for Space children 2021-10-06 09:41:57 +01:00
Michael Telatynski
7f63f496be delint 2021-09-28 14:03:41 +01:00
Michael Telatynski
ce0f16d58b Fix pagination when filtering space hierarchy 2021-09-28 13:52:30 +01:00
Michael Telatynski
af42a31794 Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/fix/19064 2021-09-17 10:22:57 +01:00
Michael Telatynski
68768002bb use more generic room type instead of boolean flag 2021-09-17 10:19:30 +01:00
Michael Telatynski
1e91191fa2 Fix missing null guard in space hierarchy pagination 2021-09-16 14:28:55 +01:00
Michael Telatynski
28bc8010a7 Say Joining space instead of Joining room where we know its a space 2021-09-16 11:20:01 +01:00
Michael Telatynski
5048e41e8b Space Hierarchy react to known local rooms changing names 2021-09-14 14:41:51 +01:00
Michael Telatynski
85b1f166e8 post-merge tidy up 2021-08-12 12:03:14 +01:00
Michael Telatynski
0a209afdc2 Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/fix/18089
 Conflicts:
	res/css/structures/_SpaceHierarchy.scss
	src/components/structures/SpaceHierarchy.tsx
	src/i18n/strings/en_EN.json
2021-08-12 11:41:03 +01:00
Michael Telatynski
38645d9054 Fix loading state issues for spaces pagination 2021-08-11 17:07:53 +01:00
Michael Telatynski
d74e9c4f90 Remove impossible space hierarchy size string 2021-08-11 16:47:14 +01:00
Michael Telatynski
1c2dc13fa3 factor our observer hook 2021-07-30 12:12:49 +01:00
Michael Telatynski
f4ed9aeef1 Add pagination mechanism to SpaceHierarchy based on IntersectionObserver 2021-07-30 11:02:22 +01:00
Michael Telatynski
259627fba2 Clean up SpaceHierarchy 2021-07-30 11:01:49 +01:00
Renamed from src/components/structures/SpaceRoomDirectory.tsx (Browse further)