@@ -89,7 +89,7 @@ interface IProps {
8989
9090interface IState {
9191 phase : Phase ;
92- createdRooms ?: boolean ; // internal state for the creation wizard
92+ firstRoomId ?: string ; // internal state for the creation wizard
9393 showRightPanel : boolean ;
9494 myMembership : string ;
9595}
@@ -508,7 +508,7 @@ const SpaceSetupFirstRooms = ({ space, title, description, onFinished }) => {
508508 try {
509509 const isPublic = space . getJoinRule ( ) === JoinRule . Public ;
510510 const filteredRoomNames = roomNames . map ( name => name . trim ( ) ) . filter ( Boolean ) ;
511- await Promise . all ( filteredRoomNames . map ( name => {
511+ const roomIds = await Promise . all ( filteredRoomNames . map ( name => {
512512 return createRoom ( {
513513 createOpts : {
514514 preset : isPublic ? Preset . PublicChat : Preset . PrivateChat ,
@@ -523,7 +523,7 @@ const SpaceSetupFirstRooms = ({ space, title, description, onFinished }) => {
523523 suggested : true ,
524524 } ) ;
525525 } ) ) ;
526- onFinished ( filteredRoomNames . length > 0 ) ;
526+ onFinished ( roomIds [ 0 ] ) ;
527527 } catch ( e ) {
528528 console . error ( "Failed to create initial space rooms" , e ) ;
529529 setError ( _t ( "Failed to create initial space rooms" ) ) ;
@@ -533,7 +533,7 @@ const SpaceSetupFirstRooms = ({ space, title, description, onFinished }) => {
533533
534534 let onClick = ( ev ) => {
535535 ev . preventDefault ( ) ;
536- onFinished ( false ) ;
536+ onFinished ( ) ;
537537 } ;
538538 let buttonLabel = _t ( "Skip for now" ) ;
539539 if ( roomNames . some ( name => name . trim ( ) ) ) {
@@ -588,7 +588,11 @@ const SpaceAddExistingRooms = ({ space, onFinished }) => {
588588 </ div > ;
589589} ;
590590
591- const SpaceSetupPublicShare = ( { justCreatedOpts, space, onFinished, createdRooms } ) => {
591+ interface ISpaceSetupPublicShareProps extends Pick < IProps & IState , "justCreatedOpts" | "space" | "firstRoomId" > {
592+ onFinished ( ) : void ;
593+ }
594+
595+ const SpaceSetupPublicShare = ( { justCreatedOpts, space, onFinished, firstRoomId } : ISpaceSetupPublicShareProps ) => {
592596 return < div className = "mx_SpaceRoomView_publicShare" >
593597 < h1 > { _t ( "Share %(name)s" , {
594598 name : justCreatedOpts ?. createOpts ?. name || space . name ,
@@ -601,7 +605,7 @@ const SpaceSetupPublicShare = ({ justCreatedOpts, space, onFinished, createdRoom
601605
602606 < div className = "mx_SpaceRoomView_buttons" >
603607 < AccessibleButton kind = "primary" onClick = { onFinished } >
604- { createdRooms ? _t ( "Go to my first room" ) : _t ( "Go to my space" ) }
608+ { firstRoomId ? _t ( "Go to my first room" ) : _t ( "Go to my space" ) }
605609 </ AccessibleButton >
606610 </ div >
607611 </ div > ;
@@ -844,35 +848,10 @@ export default class SpaceRoomView extends React.PureComponent<IProps, IState> {
844848 } ;
845849
846850 private goToFirstRoom = async ( ) => {
847- // TODO actually go to the first room
848-
849- const childRooms = SpaceStore . instance . getChildRooms ( this . props . space . roomId ) ;
850- if ( childRooms . length ) {
851- const room = childRooms [ 0 ] ;
851+ if ( this . state . firstRoomId ) {
852852 defaultDispatcher . dispatch ( {
853853 action : "view_room" ,
854- room_id : room . roomId ,
855- } ) ;
856- return ;
857- }
858-
859- let suggestedRooms = SpaceStore . instance . suggestedRooms ;
860- if ( SpaceStore . instance . activeSpace !== this . props . space ) {
861- // the space store has the suggested rooms loaded for a different space, fetch the right ones
862- suggestedRooms = ( await SpaceStore . instance . fetchSuggestedRooms ( this . props . space , 1 ) ) ;
863- }
864-
865- if ( suggestedRooms . length ) {
866- const room = suggestedRooms [ 0 ] ;
867- defaultDispatcher . dispatch ( {
868- action : "view_room" ,
869- room_id : room . room_id ,
870- room_alias : room . canonical_alias || room . aliases ?. [ 0 ] ,
871- via_servers : room . viaServers ,
872- oobData : {
873- avatarUrl : room . avatar_url ,
874- name : room . name || room . canonical_alias || room . aliases ?. [ 0 ] || _t ( "Empty room" ) ,
875- } ,
854+ room_id : this . state . firstRoomId ,
876855 } ) ;
877856 return ;
878857 }
@@ -902,14 +881,14 @@ export default class SpaceRoomView extends React.PureComponent<IProps, IState> {
902881 _t ( "Let's create a room for each of them." ) + "\n" +
903882 _t ( "You can add more later too, including already existing ones." )
904883 }
905- onFinished = { ( createdRooms : boolean ) => this . setState ( { phase : Phase . PublicShare , createdRooms } ) }
884+ onFinished = { ( firstRoomId : string ) => this . setState ( { phase : Phase . PublicShare , firstRoomId } ) }
906885 /> ;
907886 case Phase . PublicShare :
908887 return < SpaceSetupPublicShare
909888 justCreatedOpts = { this . props . justCreatedOpts }
910889 space = { this . props . space }
911890 onFinished = { this . goToFirstRoom }
912- createdRooms = { this . state . createdRooms }
891+ firstRoomId = { this . state . firstRoomId }
913892 /> ;
914893
915894 case Phase . PrivateScope :
@@ -931,7 +910,7 @@ export default class SpaceRoomView extends React.PureComponent<IProps, IState> {
931910 title = { _t ( "What projects are you working on?" ) }
932911 description = { _t ( "We'll create rooms for each of them. " +
933912 "You can add more later too, including already existing ones." ) }
934- onFinished = { ( createdRooms : boolean ) => this . setState ( { phase : Phase . Landing , createdRooms } ) }
913+ onFinished = { ( firstRoomId : string ) => this . setState ( { phase : Phase . Landing , firstRoomId } ) }
935914 /> ;
936915 case Phase . PrivateExistingRooms :
937916 return < SpaceAddExistingRooms
0 commit comments