- (userFavoriteWorlds.value || []).map((list, index) => ({
+ (userDialog.value.userFavoriteWorlds || []).map((list, index) => ({
value: String(index),
label: list?.[0] ?? ''
}))
@@ -1413,13 +1416,6 @@
const userDialogLastAvatar = ref('');
const userDialogLastWorld = ref('');
const userDialogLastFavoriteWorld = ref('');
- const userFavoriteWorlds = ref([]);
- const userGroups = ref({
- groups: [],
- ownGroups: [],
- mutualGroups: [],
- remainingGroups: []
- });
const favoriteWorldsTab = ref('0');
@@ -1732,7 +1728,9 @@
return;
}
if (command === 'Refresh') {
- showUserDialog(D.id);
+ const userId = D.id;
+ D.id = '';
+ showUserDialog(userId);
} else if (command === 'Share') {
copyUserURL(D.id);
} else if (command === 'Add Favorite') {
@@ -2064,7 +2062,7 @@
async function getUserGroups(userId) {
exitEditModeCurrentUserGroups();
userDialog.value.isGroupsLoading = true;
- userGroups.value = {
+ userDialog.value.userGroups = {
groups: [],
ownGroups: [],
mutualGroups: [],
@@ -2088,7 +2086,7 @@
saveCurrentUserGroups();
}
- userGroups.value.groups = args.json;
+ userDialog.value.userGroups.groups = args.json;
for (let i = 0; i < args.json.length; ++i) {
const group = args.json[i];
if (!group?.id) {
@@ -2096,20 +2094,20 @@
continue;
}
if (group.ownerId === userId) {
- userGroups.value.ownGroups.unshift(group);
+ userDialog.value.userGroups.ownGroups.unshift(group);
}
if (userId === currentUser.value.id) {
// skip mutual groups for current user
if (group.ownerId !== userId) {
- userGroups.value.remainingGroups.unshift(group);
+ userDialog.value.userGroups.remainingGroups.unshift(group);
}
continue;
}
if (group.mutualGroup) {
- userGroups.value.mutualGroups.unshift(group);
+ userDialog.value.userGroups.mutualGroups.unshift(group);
}
if (!group.mutualGroup && group.ownerId !== userId) {
- userGroups.value.remainingGroups.unshift(group);
+ userDialog.value.userGroups.remainingGroups.unshift(group);
}
}
if (userId === currentUser.value.id) {
@@ -2193,9 +2191,9 @@
break;
}
- userGroups.value.ownGroups.sort(sortMethod);
- userGroups.value.mutualGroups.sort(sortMethod);
- userGroups.value.remainingGroups.sort(sortMethod);
+ userDialog.value.userGroups.ownGroups.sort(sortMethod);
+ userDialog.value.userGroups.mutualGroups.sort(sortMethod);
+ userDialog.value.userGroups.remainingGroups.sort(sortMethod);
}
function setUserDialogAvatars(userId) {
@@ -2270,7 +2268,7 @@
async function getUserFavoriteWorlds(userId) {
userDialog.value.isFavoriteWorldsLoading = true;
favoriteWorldsTab.value = '0';
- userFavoriteWorlds.value = [];
+ userDialog.value.userFavoriteWorlds = [];
const worldLists = [];
let params = {
ownerId: userId,
@@ -2301,7 +2299,7 @@
console.error('getUserFavoriteWorlds', err);
}
}
- userFavoriteWorlds.value = worldLists;
+ userDialog.value.userFavoriteWorlds = worldLists;
userDialog.value.isFavoriteWorldsLoading = false;
}
diff --git a/src/components/dialogs/WorldDialog/WorldDialog.vue b/src/components/dialogs/WorldDialog/WorldDialog.vue
index 3e14cf37..2ee8fca9 100644
--- a/src/components/dialogs/WorldDialog/WorldDialog.vue
+++ b/src/components/dialogs/WorldDialog/WorldDialog.vue
@@ -1088,7 +1088,9 @@
showChangeWorldImageDialog();
break;
case 'Refresh':
- showWorldDialog(D.id);
+ const worldId = D.id;
+ D.id = '';
+ showWorldDialog(worldId);
break;
case 'New Instance':
showNewInstanceDialog(D.$location.tag);
diff --git a/src/stores/avatar.js b/src/stores/avatar.js
index b4d9a5e4..89406177 100644
--- a/src/stores/avatar.js
+++ b/src/stores/avatar.js
@@ -65,7 +65,8 @@ export const useAvatarStore = defineStore('Avatar', () => {
cacheSize: '',
cacheLocked: false,
cachePath: '',
- fileAnalysis: {}
+ fileAnalysis: {},
+ timeSpent: 0
});
const avatarHistory = ref([]);
@@ -183,7 +184,11 @@ export const useAvatarStore = defineStore('Avatar', () => {
id: avatarId,
skipBreadcrumb: options.skipBreadcrumb
});
-
+ D.visible = true;
+ if (D.id === avatarId) {
+ uiStore.setDialogCrumbLabel('avatar', D.id, D.ref?.name || D.id);
+ return;
+ }
D.loading = true;
D.id = avatarId;
D.inCache = false;
@@ -220,7 +225,6 @@ export const useAvatarStore = defineStore('Avatar', () => {
return;
}
}
- D.visible = true;
avatarRequest
.getAvatar({ avatarId })
.then((args) => {
diff --git a/src/stores/group.js b/src/stores/group.js
index f49dbdce..b43c7dac 100644
--- a/src/stores/group.js
+++ b/src/stores/group.js
@@ -142,6 +142,10 @@ export const useGroupStore = defineStore('Group', () => {
});
const D = groupDialog.value;
D.visible = true;
+ if (D.id === groupId) {
+ uiStore.setDialogCrumbLabel('group', D.id, D.ref?.name || D.id);
+ return;
+ }
D.loading = true;
D.id = groupId;
D.inGroup = false;
diff --git a/src/stores/user.js b/src/stores/user.js
index ef623082..8e2df0cd 100644
--- a/src/stores/user.js
+++ b/src/stores/user.js
@@ -216,6 +216,13 @@ export const useUserStore = defineStore('User', () => {
isFavoriteWorldsLoading: false,
isAvatarsLoading: false,
isGroupsLoading: false,
+ userFavoriteWorlds: [],
+ userGroups: {
+ groups: [],
+ ownGroups: [],
+ mutualGroups: [],
+ remainingGroups: []
+ },
worldSorting: {
name: 'dialog.user.worlds.sorting.updated',
@@ -771,6 +778,14 @@ export const useUserStore = defineStore('User', () => {
});
const D = userDialog.value;
D.visible = true;
+ if (D.id === userId) {
+ uiStore.setDialogCrumbLabel(
+ 'user',
+ D.id,
+ D.ref?.displayName || D.id
+ );
+ return;
+ }
D.id = userId;
D.memo = '';
D.note = '';
diff --git a/src/stores/world.js b/src/stores/world.js
index cb718185..b4607bf8 100644
--- a/src/stores/world.js
+++ b/src/stores/world.js
@@ -90,6 +90,10 @@ export const useWorldStore = defineStore('World', () => {
skipBreadcrumb: options.skipBreadcrumb
});
D.visible = true;
+ if (D.id === L.worldId) {
+ uiStore.setDialogCrumbLabel('world', D.id, D.ref?.name || D.id);
+ return;
+ }
L.shortName = shortName;
D.id = L.worldId;
D.$location = L;