diff --git a/src/stores/avatar.js b/src/stores/avatar.js index ce88e3cd..4e02092f 100644 --- a/src/stores/avatar.js +++ b/src/stores/avatar.js @@ -19,6 +19,7 @@ import { useAdvancedSettingsStore } from './settings/advanced'; import { useAvatarProviderStore } from './avatarProvider'; import { useFavoriteStore } from './favorite'; import { useGroupStore } from './group'; +import { useInstanceStore } from './instance'; import { useModalStore } from './modal'; import { useUiStore } from './ui'; import { useUserStore } from './user'; @@ -33,6 +34,7 @@ export const useAvatarStore = defineStore('Avatar', () => { const avatarProviderStore = useAvatarProviderStore(); const vrcxUpdaterStore = useVRCXUpdaterStore(); const advancedSettingsStore = useAdvancedSettingsStore(); + const instanceStore = useInstanceStore(); const userStore = useUserStore(); const worldStore = useWorldStore(); const groupStore = useGroupStore(); @@ -181,17 +183,22 @@ export const useAvatarStore = defineStore('Avatar', () => { */ function showAvatarDialog(avatarId, options = {}) { const D = avatarDialog.value; - if ( - !avatarDialog.value.visible && - !userStore.userDialog.visible && - !worldStore.worldDialog.visible && - !groupStore.groupDialog.visible - ) { + const hadActiveDialog = + avatarDialog.value.visible || + userStore.userDialog.visible || + worldStore.worldDialog.visible || + groupStore.groupDialog.visible || + instanceStore.previousInstancesInfoDialog.visible || + instanceStore.previousInstancesUserDialog.visible || + instanceStore.previousInstancesWorldDialog.visible || + instanceStore.previousInstancesGroupDialog.visible; + if (!hadActiveDialog) { uiStore.clearDialogCrumbs(); } if (!options.skipBreadcrumb) { uiStore.pushDialogCrumb('avatar', avatarId); } + instanceStore.hidePreviousInstancesDialogs(); userStore.userDialog.visible = false; worldStore.worldDialog.visible = false; groupStore.groupDialog.visible = false; diff --git a/src/stores/group.js b/src/stores/group.js index f2bc0bee..184dd331 100644 --- a/src/stores/group.js +++ b/src/stores/group.js @@ -135,17 +135,22 @@ export const useGroupStore = defineStore('Group', () => { if (!groupId) { return; } - if ( - !groupDialog.value.visible && - !userStore.userDialog.visible && - !worldStore.worldDialog.visible && - !avatarStore.avatarDialog.visible - ) { + const hadActiveDialog = + groupDialog.value.visible || + userStore.userDialog.visible || + worldStore.worldDialog.visible || + avatarStore.avatarDialog.visible || + instanceStore.previousInstancesInfoDialog.visible || + instanceStore.previousInstancesUserDialog.visible || + instanceStore.previousInstancesWorldDialog.visible || + instanceStore.previousInstancesGroupDialog.visible; + if (!hadActiveDialog) { uiStore.clearDialogCrumbs(); } if (!options.skipBreadcrumb) { uiStore.pushDialogCrumb('group', groupId); } + instanceStore.hidePreviousInstancesDialogs(); userStore.userDialog.visible = false; worldStore.worldDialog.visible = false; avatarStore.avatarDialog.visible = false; diff --git a/src/stores/user.js b/src/stores/user.js index d53d1d95..e89a83bd 100644 --- a/src/stores/user.js +++ b/src/stores/user.js @@ -767,17 +767,22 @@ export const useUserStore = defineStore('User', () => { ) { return; } - if ( - !userDialog.value.visible && - !worldStore.worldDialog.visible && - !avatarStore.avatarDialog.visible && - !groupStore.groupDialog.visible - ) { + const hadActiveDialog = + userDialog.value.visible || + worldStore.worldDialog.visible || + avatarStore.avatarDialog.visible || + groupStore.groupDialog.visible || + instanceStore.previousInstancesInfoDialog.visible || + instanceStore.previousInstancesUserDialog.visible || + instanceStore.previousInstancesWorldDialog.visible || + instanceStore.previousInstancesGroupDialog.visible; + if (!hadActiveDialog) { uiStore.clearDialogCrumbs(); } if (!options.skipBreadcrumb) { uiStore.pushDialogCrumb('user', userId); } + instanceStore.hidePreviousInstancesDialogs(); worldStore.worldDialog.visible = false; avatarStore.avatarDialog.visible = false; groupStore.groupDialog.visible = false; diff --git a/src/stores/world.js b/src/stores/world.js index 40d224f7..dd52f440 100644 --- a/src/stores/world.js +++ b/src/stores/world.js @@ -84,17 +84,22 @@ export const useWorldStore = defineStore('World', () => { if (L.worldId === '') { return; } - if ( - !worldDialog.visible && - !userStore.userDialog.visible && - !avatarStore.avatarDialog.visible && - !groupStore.groupDialog.visible - ) { + const hadActiveDialog = + worldDialog.visible || + userStore.userDialog.visible || + avatarStore.avatarDialog.visible || + groupStore.groupDialog.visible || + instanceStore.previousInstancesInfoDialog.visible || + instanceStore.previousInstancesUserDialog.visible || + instanceStore.previousInstancesWorldDialog.visible || + instanceStore.previousInstancesGroupDialog.visible; + if (!hadActiveDialog) { uiStore.clearDialogCrumbs(); } if (!options.skipBreadcrumb) { uiStore.pushDialogCrumb('world', L.worldId); } + instanceStore.hidePreviousInstancesDialogs(); userStore.userDialog.visible = false; avatarStore.avatarDialog.visible = false; groupStore.groupDialog.visible = false;