use computed get local favorite group length

This commit is contained in:
pa
2025-10-27 22:32:09 +09:00
committed by Natsumi
parent 5c9de1adba
commit 892790d5ab
8 changed files with 39 additions and 51 deletions
@@ -29,13 +29,13 @@
style="display: block; width: 100%; margin: 10px 0; white-space: initial; height: auto" style="display: block; width: 100%; margin: 10px 0; white-space: initial; height: auto"
@click="removeLocalWorldFavorite(favoriteDialog.objectId, group)"> @click="removeLocalWorldFavorite(favoriteDialog.objectId, group)">
<el-icon style="margin-right: 5px"><Check /></el-icon> <el-icon style="margin-right: 5px"><Check /></el-icon>
{{ group }} ({{ getLocalWorldFavoriteGroupLength(group) }}) {{ group }} ({{ localWorldFavGroupLength(group) }})
</el-button> </el-button>
<el-button <el-button
v-else v-else
style="display: block; width: 100%; margin: 10px 0; white-space: initial; height: auto" style="display: block; width: 100%; margin: 10px 0; white-space: initial; height: auto"
@click="addLocalWorldFavorite(favoriteDialog.objectId, group)"> @click="addLocalWorldFavorite(favoriteDialog.objectId, group)">
{{ group }} ({{ getLocalWorldFavoriteGroupLength(group) }}) {{ group }} ({{ localWorldFavGroupLength(group) }})
</el-button> </el-button>
</template> </template>
</div> </div>
@@ -47,14 +47,14 @@
style="display: block; width: 100%; margin: 10px 0; white-space: initial; height: auto" style="display: block; width: 100%; margin: 10px 0; white-space: initial; height: auto"
@click="removeLocalAvatarFavorite(favoriteDialog.objectId, group)"> @click="removeLocalAvatarFavorite(favoriteDialog.objectId, group)">
<el-icon style="margin-right: 5px"><Check /></el-icon> <el-icon style="margin-right: 5px"><Check /></el-icon>
{{ group }} ({{ getLocalAvatarFavoriteGroupLength(group) }}) {{ group }} ({{ localAvatarFavGroupLength(group) }})
</el-button> </el-button>
<el-button <el-button
v-else v-else
style="display: block; width: 100%; margin: 10px 0; white-space: initial; height: auto" style="display: block; width: 100%; margin: 10px 0; white-space: initial; height: auto"
:disabled="!isLocalUserVrcPlusSupporter" :disabled="!isLocalUserVrcPlusSupporter"
@click="addLocalAvatarFavorite(favoriteDialog.objectId, group)"> @click="addLocalAvatarFavorite(favoriteDialog.objectId, group)">
{{ group }} ({{ getLocalAvatarFavoriteGroupLength(group) }}) {{ group }} ({{ localAvatarFavGroupLength(group) }})
</el-button> </el-button>
</template> </template>
</div> </div>
@@ -85,12 +85,12 @@
localWorldFavoriteGroups localWorldFavoriteGroups
} = storeToRefs(favoriteStore); } = storeToRefs(favoriteStore);
const { const {
getLocalWorldFavoriteGroupLength, localWorldFavGroupLength,
addLocalWorldFavorite, addLocalWorldFavorite,
hasLocalWorldFavorite, hasLocalWorldFavorite,
hasLocalAvatarFavorite, hasLocalAvatarFavorite,
addLocalAvatarFavorite, addLocalAvatarFavorite,
getLocalAvatarFavoriteGroupLength, localAvatarFavGroupLength,
removeLocalAvatarFavorite, removeLocalAvatarFavorite,
removeLocalWorldFavorite, removeLocalWorldFavorite,
deleteFavoriteNoConfirm deleteFavoriteNoConfirm
+18 -28
View File
@@ -135,6 +135,22 @@ export const useFavoriteStore = defineStore('Favorite', () => {
return groupedByGroupKeyFavoriteFriends; return groupedByGroupKeyFavoriteFriends;
}); });
const localWorldFavGroupLength = computed(() => (group) => {
const favoriteGroup = localWorldFavorites.value[group];
if (!favoriteGroup) {
return 0;
}
return favoriteGroup.length;
});
const localAvatarFavGroupLength = computed(() => (group) => {
const favoriteGroup = localAvatarFavorites.value[group];
if (!favoriteGroup) {
return 0;
}
return favoriteGroup.length;
});
watch( watch(
() => watchState.isLoggedIn, () => watchState.isLoggedIn,
(isLoggedIn) => { (isLoggedIn) => {
@@ -905,19 +921,6 @@ export const useFavoriteStore = defineStore('Favorite', () => {
friendImportDialogVisible.value = true; friendImportDialogVisible.value = true;
} }
/**
*
* @param {string} group
* @returns {*|number}
*/
function getLocalWorldFavoriteGroupLength(group) {
const favoriteGroup = localWorldFavorites.value[group];
if (!favoriteGroup) {
return 0;
}
return favoriteGroup.length;
}
/** /**
* *
* @param {string} worldId * @param {string} worldId
@@ -1040,19 +1043,6 @@ export const useFavoriteStore = defineStore('Favorite', () => {
return false; return false;
} }
/**
*
* @param {string} group
* @returns {*|number}
*/
function getLocalAvatarFavoriteGroupLength(group) {
const favoriteGroup = localAvatarFavorites.value[group];
if (!favoriteGroup) {
return 0;
}
return favoriteGroup.length;
}
function updateFavoriteDialog(objectId) { function updateFavoriteDialog(objectId) {
const D = favoriteDialog.value; const D = favoriteDialog.value;
if (!D.visible || D.objectId !== objectId) { if (!D.visible || D.objectId !== objectId) {
@@ -1608,12 +1598,12 @@ export const useFavoriteStore = defineStore('Favorite', () => {
showWorldImportDialog, showWorldImportDialog,
showAvatarImportDialog, showAvatarImportDialog,
showFriendImportDialog, showFriendImportDialog,
getLocalWorldFavoriteGroupLength, localWorldFavGroupLength,
addLocalWorldFavorite, addLocalWorldFavorite,
hasLocalWorldFavorite, hasLocalWorldFavorite,
hasLocalAvatarFavorite, hasLocalAvatarFavorite,
addLocalAvatarFavorite, addLocalAvatarFavorite,
getLocalAvatarFavoriteGroupLength, localAvatarFavGroupLength,
updateFavoriteDialog, updateFavoriteDialog,
deleteLocalAvatarFavoriteGroup, deleteLocalAvatarFavoriteGroup,
renameLocalAvatarFavoriteGroup, renameLocalAvatarFavoriteGroup,
@@ -165,7 +165,7 @@
<template #title v-if="localAvatarFavorites[group]"> <template #title v-if="localAvatarFavorites[group]">
<span :style="{ fontWeight: 'bold', fontSize: '14px', marginLeft: '10px' }">{{ group }}</span> <span :style="{ fontWeight: 'bold', fontSize: '14px', marginLeft: '10px' }">{{ group }}</span>
<span :style="{ color: '#909399', fontSize: '12px', marginLeft: '10px' }">{{ <span :style="{ color: '#909399', fontSize: '12px', marginLeft: '10px' }">{{
getLocalAvatarFavoriteGroupLength(group) localAvatarFavGroupLength(group)
}}</span> }}</span>
<el-tooltip placement="top" :content="t('view.favorite.rename_tooltip')" :teleported="false"> <el-tooltip placement="top" :content="t('view.favorite.rename_tooltip')" :teleported="false">
<el-button <el-button
@@ -253,7 +253,7 @@
} = storeToRefs(useFavoriteStore()); } = storeToRefs(useFavoriteStore());
const { const {
showAvatarImportDialog, showAvatarImportDialog,
getLocalAvatarFavoriteGroupLength, localAvatarFavGroupLength,
deleteLocalAvatarFavoriteGroup, deleteLocalAvatarFavoriteGroup,
renameLocalAvatarFavoriteGroup, renameLocalAvatarFavoriteGroup,
newLocalAvatarFavoriteGroup newLocalAvatarFavoriteGroup
@@ -161,7 +161,7 @@
<template #title> <template #title>
<span style="font-weight: bold; font-size: 14px; margin-left: 10px" v-text="group" /> <span style="font-weight: bold; font-size: 14px; margin-left: 10px" v-text="group" />
<span style="color: #909399; font-size: 12px; margin-left: 10px">{{ <span style="color: #909399; font-size: 12px; margin-left: 10px">{{
getLocalWorldFavoriteGroupLength(group) localWorldFavGroupLength(group)
}}</span> }}</span>
<el-tooltip placement="top" :content="t('view.favorite.rename_tooltip')" :teleported="false"> <el-tooltip placement="top" :content="t('view.favorite.rename_tooltip')" :teleported="false">
<el-button <el-button
@@ -254,7 +254,7 @@
} = storeToRefs(useFavoriteStore()); } = storeToRefs(useFavoriteStore());
const { const {
showWorldImportDialog, showWorldImportDialog,
getLocalWorldFavoriteGroupLength, localWorldFavGroupLength,
deleteLocalWorldFavoriteGroup, deleteLocalWorldFavoriteGroup,
renameLocalWorldFavoriteGroup, renameLocalWorldFavoriteGroup,
removeLocalWorldFavorite, removeLocalWorldFavorite,
@@ -42,7 +42,7 @@
<el-button size="small"> <el-button size="small">
<span v-if="avatarExportLocalFavoriteGroup"> <span v-if="avatarExportLocalFavoriteGroup">
{{ avatarExportLocalFavoriteGroup }} ({{ {{ avatarExportLocalFavoriteGroup }} ({{
getLocalAvatarFavoriteGroupLength(avatarExportLocalFavoriteGroup) localAvatarFavGroupLength(avatarExportLocalFavoriteGroup)
}}) }})
<el-icon class="el-icon--right"><ArrowDown /></el-icon> <el-icon class="el-icon--right"><ArrowDown /></el-icon>
</span> </span>
@@ -62,7 +62,7 @@
<el-dropdown-item <el-dropdown-item
style="display: block; margin: 10px 0" style="display: block; margin: 10px 0"
@click="selectAvatarExportLocalGroup(group)"> @click="selectAvatarExportLocalGroup(group)">
{{ group }} ({{ getLocalAvatarFavoriteGroupLength(group) }}) {{ group }} ({{ localAvatarFavGroupLength(group) }})
</el-dropdown-item> </el-dropdown-item>
</template> </template>
</el-dropdown-menu> </el-dropdown-menu>
@@ -109,7 +109,7 @@
localAvatarFavoritesList, localAvatarFavoritesList,
localAvatarFavoriteGroups localAvatarFavoriteGroups
} = storeToRefs(favoriteStore); } = storeToRefs(favoriteStore);
const { getLocalAvatarFavoriteGroupLength } = favoriteStore; const { localAvatarFavGroupLength } = favoriteStore;
const { cachedAvatars } = useAvatarStore(); const { cachedAvatars } = useAvatarStore();
const avatarExportContent = ref(''); const avatarExportContent = ref('');
@@ -59,7 +59,7 @@
<el-button size="small"> <el-button size="small">
<span v-if="avatarImportDialog.avatarImportLocalFavoriteGroup"> <span v-if="avatarImportDialog.avatarImportLocalFavoriteGroup">
{{ avatarImportDialog.avatarImportLocalFavoriteGroup }} ({{ {{ avatarImportDialog.avatarImportLocalFavoriteGroup }} ({{
getLocalAvatarFavoriteGroupLength(avatarImportDialog.avatarImportLocalFavoriteGroup) localAvatarFavGroupLength(avatarImportDialog.avatarImportLocalFavoriteGroup)
}}) }})
<el-icon class="el-icon--right"><ArrowDown /></el-icon> <el-icon class="el-icon--right"><ArrowDown /></el-icon>
</span> </span>
@@ -74,7 +74,7 @@
<el-dropdown-item <el-dropdown-item
style="display: block; margin: 10px 0" style="display: block; margin: 10px 0"
@click="selectAvatarImportLocalGroup(group)"> @click="selectAvatarImportLocalGroup(group)">
{{ group }} ({{ getLocalAvatarFavoriteGroupLength(group) }}) {{ group }} ({{ localAvatarFavGroupLength(group) }})
</el-dropdown-item> </el-dropdown-item>
</template> </template>
</el-dropdown-menu> </el-dropdown-menu>
@@ -192,7 +192,7 @@
const { showUserDialog } = useUserStore(); const { showUserDialog } = useUserStore();
const { favoriteAvatarGroups, avatarImportDialogInput, avatarImportDialogVisible, localAvatarFavoriteGroups } = const { favoriteAvatarGroups, avatarImportDialogInput, avatarImportDialogVisible, localAvatarFavoriteGroups } =
storeToRefs(useFavoriteStore()); storeToRefs(useFavoriteStore());
const { addLocalAvatarFavorite, getLocalAvatarFavoriteGroupLength } = useFavoriteStore(); const { addLocalAvatarFavorite, localAvatarFavGroupLength } = useFavoriteStore();
const { showAvatarDialog, applyAvatar } = useAvatarStore(); const { showAvatarDialog, applyAvatar } = useAvatarStore();
const { showFullscreenImageDialog } = useGalleryStore(); const { showFullscreenImageDialog } = useGalleryStore();
@@ -41,9 +41,7 @@
<el-dropdown trigger="click" size="small" style="margin-left: 10px"> <el-dropdown trigger="click" size="small" style="margin-left: 10px">
<el-button size="small"> <el-button size="small">
<span v-if="worldExportLocalFavoriteGroup"> <span v-if="worldExportLocalFavoriteGroup">
{{ worldExportLocalFavoriteGroup }} ({{ {{ worldExportLocalFavoriteGroup }} ({{ localWorldFavGroupLength(worldExportLocalFavoriteGroup) }})
getLocalWorldFavoriteGroupLength(worldExportLocalFavoriteGroup)
}})
<el-icon class="el-icon--right"><ArrowDown /></el-icon> <el-icon class="el-icon--right"><ArrowDown /></el-icon>
</span> </span>
<span v-else> <span v-else>
@@ -109,7 +107,7 @@
localWorldFavoriteGroups, localWorldFavoriteGroups,
localWorldFavoritesList localWorldFavoritesList
} = storeToRefs(favoriteStore); } = storeToRefs(favoriteStore);
const { getLocalWorldFavoriteGroupLength } = favoriteStore; const { localWorldFavGroupLength } = favoriteStore;
const { cachedWorlds } = useWorldStore(); const { cachedWorlds } = useWorldStore();
const worldExportContent = ref(''); const worldExportContent = ref('');
@@ -61,7 +61,7 @@
<el-button size="small"> <el-button size="small">
<span v-if="worldImportDialog.worldImportLocalFavoriteGroup"> <span v-if="worldImportDialog.worldImportLocalFavoriteGroup">
{{ worldImportDialog.worldImportLocalFavoriteGroup }} {{ worldImportDialog.worldImportLocalFavoriteGroup }}
({{ getLocalWorldFavoriteGroupLength(worldImportDialog.worldImportLocalFavoriteGroup) }}) ({{ localWorldFavGroupLength(worldImportDialog.worldImportLocalFavoriteGroup) }})
<el-icon class="el-icon--right"><ArrowDown /></el-icon> <el-icon class="el-icon--right"><ArrowDown /></el-icon>
</span> </span>
<span v-else> <span v-else>
@@ -75,7 +75,7 @@
<el-dropdown-item <el-dropdown-item
style="display: block; margin: 10px 0" style="display: block; margin: 10px 0"
@click="selectWorldImportLocalGroup(group)"> @click="selectWorldImportLocalGroup(group)">
{{ group }} ({{ getLocalWorldFavoriteGroupLength(group) }}) {{ group }} ({{ localWorldFavGroupLength(group) }})
</el-dropdown-item> </el-dropdown-item>
</template> </template>
</el-dropdown-menu> </el-dropdown-menu>
@@ -186,7 +186,7 @@
const { showUserDialog } = useUserStore(); const { showUserDialog } = useUserStore();
const { favoriteWorldGroups, worldImportDialogInput, worldImportDialogVisible, localWorldFavoriteGroups } = const { favoriteWorldGroups, worldImportDialogInput, worldImportDialogVisible, localWorldFavoriteGroups } =
storeToRefs(useFavoriteStore()); storeToRefs(useFavoriteStore());
const { getLocalWorldFavoriteGroupLength, addLocalWorldFavorite } = useFavoriteStore(); const { localWorldFavGroupLength, addLocalWorldFavorite } = useFavoriteStore();
const { showWorldDialog } = useWorldStore(); const { showWorldDialog } = useWorldStore();
const { showFullscreenImageDialog } = useGalleryStore(); const { showFullscreenImageDialog } = useGalleryStore();