Open DMs during sync catch-up instead of blocking on parent maps.
Prefer the direct route for m.direct rooms and allow joined space children before roomToParents finishes backfilling.
This commit is contained in:
@@ -56,6 +56,19 @@ export const useRoomNavigate = () => {
|
||||
}
|
||||
|
||||
const orphanParents = openSpaceTimeline ? [roomId] : getOrphanParents(roomToParents, roomId);
|
||||
|
||||
// Prefer Direct for m.direct rooms unless we are already browsing a parent space
|
||||
// of this room (keep space chrome). Opening via space while roomToParents is still
|
||||
// catching up used to hit JoinBeforeNavigate even though the DM was listed.
|
||||
if (mDirects.has(roomId)) {
|
||||
const stayInSelectedSpace =
|
||||
Boolean(spaceSelectedId) && orphanParents.includes(spaceSelectedId!);
|
||||
if (!stayInSelectedSpace) {
|
||||
navigate(getDirectRoomPath(roomIdOrAlias, eventId), opts);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (orphanParents.length > 0) {
|
||||
let parentSpace: string;
|
||||
if (spaceSelectedId && orphanParents.includes(spaceSelectedId)) {
|
||||
@@ -73,11 +86,6 @@ export const useRoomNavigate = () => {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mDirects.has(roomId)) {
|
||||
navigate(getDirectRoomPath(roomIdOrAlias, eventId), opts);
|
||||
return;
|
||||
}
|
||||
|
||||
navigate(getHomeRoomPath(roomIdOrAlias, eventId), opts);
|
||||
},
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user