Keep instance when reopening world dialog

This commit is contained in:
Natsumi
2026-02-19 00:22:46 +11:00
parent 1594103f39
commit 33e3ba0fb3
3 changed files with 23 additions and 8 deletions

View File

@@ -1155,9 +1155,9 @@
showChangeWorldImageDialog();
break;
case 'Refresh':
const worldId = D.id;
const { tag, shortName } = worldDialog.value.$location;
D.id = '';
showWorldDialog(worldId);
showWorldDialog(tag, shortName);
break;
case 'New Instance':
showNewInstanceDialog(D.$location.tag);

View File

@@ -69,7 +69,8 @@ export const useUiStore = defineStore('Ui', () => {
}
});
function pushDialogCrumb(type, id, label = '') {
function pushDialogCrumb(data) {
const { type, id, label } = data;
if (!type || !id) {
return;
}
@@ -91,7 +92,10 @@ export const useUiStore = defineStore('Ui', () => {
}
return;
}
items.push({ type, id, label: label || id });
if (!data.label) {
data.label = data.id;
}
items.push(data);
}
function setDialogCrumbLabel(type, id, label) {
@@ -135,7 +139,7 @@ export const useUiStore = defineStore('Ui', () => {
return;
}
if (item.type === 'world') {
worldStore.showWorldDialog(item.id, null);
worldStore.showWorldDialog(item.tag, item.shortName);
return;
}
if (item.type === 'avatar') {
@@ -187,7 +191,16 @@ export const useUiStore = defineStore('Ui', () => {
clearDialogCrumbs();
}
function openDialog({ type, id, label = '' }) {
/**
* @param {Object} data
* @param {string} data.type
* @param {string} data.id
* @param {string?} data.tag
* @param {string?} data.shortName
* @returns {boolean}
*/
function openDialog(data) {
const { type } = data;
const userStore = useUserStore();
const worldStore = useWorldStore();
const avatarStore = useAvatarStore();
@@ -229,7 +242,7 @@ export const useUiStore = defineStore('Ui', () => {
if (!hadActiveDialog) {
clearDialogCrumbs();
}
pushDialogCrumb(type, id, label);
pushDialogCrumb(data);
return hadActiveDialog;
}

View File

@@ -84,7 +84,9 @@ export const useWorldStore = defineStore('World', () => {
}
const isMainDialogOpen = uiStore.openDialog({
type: 'world',
id: L.worldId
id: L.worldId,
tag,
shortName
});
D.visible = true;
if (isMainDialogOpen && D.id === L.worldId) {