diff --git a/src/components/dialogs/WorldDialog/WorldDialog.vue b/src/components/dialogs/WorldDialog/WorldDialog.vue index 29d1a87e..79b414d3 100644 --- a/src/components/dialogs/WorldDialog/WorldDialog.vue +++ b/src/components/dialogs/WorldDialog/WorldDialog.vue @@ -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); diff --git a/src/stores/ui.js b/src/stores/ui.js index 773badce..02858c33 100644 --- a/src/stores/ui.js +++ b/src/stores/ui.js @@ -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; } diff --git a/src/stores/world.js b/src/stores/world.js index 0b73f744..3a6b577f 100644 --- a/src/stores/world.js +++ b/src/stores/world.js @@ -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) {