Skip to content

Commit 51f1d21

Browse files
authored
Merge pull request matrix-org#6748 from matrix-org/t3chguy/fix/18764
Fix Space creation wizard go to my first room button behaviour
2 parents 527ea6e + 8cab86e commit 51f1d21

File tree

1 file changed

+15
-36
lines changed

1 file changed

+15
-36
lines changed

src/components/structures/SpaceRoomView.tsx

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ interface IProps {
8989

9090
interface 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

Comments
 (0)