@@ -67,10 +67,11 @@ import { type JoinRoomReadyPayload } from "../../dispatcher/payloads/JoinRoomRea
6767import { KeyBindingAction } from "../../accessibility/KeyboardShortcuts" ;
6868import { getKeyBindingsManager } from "../../KeyBindingsManager" ;
6969import { getTopic } from "../../hooks/room/useTopic" ;
70- import { SdkContextClass } from "../../contexts/SDKContext" ;
7170import { getDisplayAliasForAliasSet } from "../../Rooms" ;
7271import SettingsStore from "../../settings/SettingsStore" ;
7372import { filterBoolean } from "../../utils/arrays.ts" ;
73+ import { type RoomViewStore } from "../../stores/RoomViewStore.tsx" ;
74+ import RoomContext from "../../contexts/RoomContext.ts" ;
7475
7576interface IProps {
7677 space : Room ;
@@ -404,7 +405,20 @@ export const showRoom = (cli: MatrixClient, hierarchy: RoomHierarchy, roomId: st
404405 } ) ;
405406} ;
406407
407- export const joinRoom = async ( cli : MatrixClient , hierarchy : RoomHierarchy , roomId : string ) : Promise < unknown > => {
408+ /**
409+ * Join a room.
410+ * @param cli The Matrix client
411+ * @param roomViewStore The RoomViewStore instance
412+ * @param hierarchy The RoomHierarchy instance
413+ * @param roomId The ID of the room to join
414+ * @returns A promise that resolves when the room has been joined
415+ */
416+ export const joinRoom = async (
417+ cli : MatrixClient ,
418+ roomViewStore : RoomViewStore ,
419+ hierarchy : RoomHierarchy ,
420+ roomId : string ,
421+ ) : Promise < unknown > => {
408422 // Don't let the user view a room they won't be able to either peek or join:
409423 // fail earlier so they don't have to click back to the directory.
410424 if ( cli . isGuest ( ) ) {
@@ -418,10 +432,10 @@ export const joinRoom = async (cli: MatrixClient, hierarchy: RoomHierarchy, room
418432 } ) ;
419433 } catch ( err : unknown ) {
420434 if ( err instanceof MatrixError ) {
421- SdkContextClass . instance . roomViewStore . showJoinRoomError ( err , roomId ) ;
435+ roomViewStore . showJoinRoomError ( err , roomId ) ;
422436 } else {
423437 logger . warn ( "Got a non-MatrixError while joining room" , err ) ;
424- SdkContextClass . instance . roomViewStore . showJoinRoomError (
438+ roomViewStore . showJoinRoomError (
425439 new MatrixError ( {
426440 error : _t ( "error|unknown" ) ,
427441 } ) ,
@@ -761,6 +775,7 @@ const ManageButtons: React.FC<IManageButtonsProps> = ({ hierarchy, selected, set
761775
762776const SpaceHierarchy : React . FC < IProps > = ( { space, initialText = "" , showRoom, additionalButtons } ) => {
763777 const cli = useContext ( MatrixClientContext ) ;
778+ const roomContext = useContext ( RoomContext ) ;
764779 const [ query , setQuery ] = useState ( initialText ) ;
765780
766781 const [ selected , setSelected ] = useState ( new Map < string , Set < string > > ( ) ) ; // Map<parentId, Set<childId>>
@@ -855,10 +870,10 @@ const SpaceHierarchy: React.FC<IProps> = ({ space, initialText = "", showRoom, a
855870 onJoinRoomClick = { async ( roomId , parents ) => {
856871 for ( const parent of parents ) {
857872 if ( cli . getRoom ( parent ) ?. getMyMembership ( ) !== KnownMembership . Join ) {
858- await joinRoom ( cli , hierarchy , parent ) ;
873+ await joinRoom ( cli , roomContext . roomViewStore , hierarchy , parent ) ;
859874 }
860875 }
861- await joinRoom ( cli , hierarchy , roomId ) ;
876+ await joinRoom ( cli , roomContext . roomViewStore , hierarchy , roomId ) ;
862877 } }
863878 />
864879 </ >
0 commit comments