From 4d18c92f595b48fa20ff172b4d652ad2ab097ec4 Mon Sep 17 00:00:00 2001 From: pa Date: Tue, 28 Oct 2025 12:12:45 +0900 Subject: [PATCH] cachedFavoritesByObjectId --- src/stores/avatar.js | 2 +- src/stores/favorite.js | 40 ++++++++++--------- src/stores/photon.js | 4 +- src/stores/user.js | 5 ++- src/stores/vrcx.js | 4 +- src/stores/world.js | 2 +- .../FavoritesAvatarLocalHistoryItem.vue | 5 +-- 7 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/stores/avatar.js b/src/stores/avatar.js index 1d2870b7..c67bbf20 100644 --- a/src/stores/avatar.js +++ b/src/stores/avatar.js @@ -190,7 +190,7 @@ export const useAvatarStore = defineStore('Avatar', () => { D.galleryImages = []; D.galleryLoading = true; D.isFavorite = - favoriteStore.cachedFavoritesByObjectId.has(avatarId) || + favoriteStore.cachedFavoritesByObjectId(avatarId) || (userStore.isLocalUserVrcPlusSupporter && favoriteStore.localAvatarFavoritesList.includes(avatarId)); D.isBlocked = cachedAvatarModerations.has(avatarId); diff --git a/src/stores/favorite.js b/src/stores/favorite.js index 22053f30..c91503bb 100644 --- a/src/stores/favorite.js +++ b/src/stores/favorite.js @@ -32,7 +32,7 @@ export const useFavoriteStore = defineStore('Favorite', () => { favoriteAvatars_: [] }); - const cachedFavorites = ref(new Map()); + const cachedFavorites = reactive(new Map()); const currentFavoriteTab = ref('friend'); @@ -130,7 +130,14 @@ export const useFavoriteStore = defineStore('Favorite', () => { currentGroup: {} }); - const cachedFavoritesByObjectId = ref(new Map()); + const cachedFavoritesByObjectId = computed(() => (objectId) => { + for (const item of cachedFavorites.values()) { + if (item.favoriteId === objectId) { + return item; + } + } + return undefined; + }); const localAvatarFavoriteGroups = computed(() => Object.keys(localAvatarFavorites.value).sort() @@ -185,8 +192,7 @@ export const useFavoriteStore = defineStore('Favorite', () => { () => watchState.isLoggedIn, (isLoggedIn) => { friendStore.localFavoriteFriends.clear(); - cachedFavorites.value.clear(); - cachedFavoritesByObjectId.value.clear(); + cachedFavorites.clear(); cachedFavoriteGroups.value = {}; favoriteFriendGroups.value = []; favoriteWorldGroups.value = []; @@ -279,11 +285,10 @@ export const useFavoriteStore = defineStore('Favorite', () => { } function handleFavoriteDelete(args) { - const ref = cachedFavoritesByObjectId.value.get(args.params.objectId); + const ref = cachedFavoritesByObjectId.value(args.params.objectId); if (typeof ref === 'undefined') { return; } - cachedFavoritesByObjectId.value.delete(args.params.objectId); friendStore.localFavoriteFriends.delete(args.params.objectId); friendStore.updateSidebarFriendsList(); if (ref.$isDeleted) { @@ -309,11 +314,10 @@ export const useFavoriteStore = defineStore('Favorite', () => { function handleFavoriteGroupClear(args) { const key = `${args.params.type}:${args.params.group}`; - for (const ref of cachedFavorites.value.values()) { + for (const ref of cachedFavorites.values()) { if (ref.$isDeleted || ref.$groupKey !== key) { continue; } - cachedFavoritesByObjectId.value.delete(ref.favoriteId); friendStore.localFavoriteFriends.delete(ref.favoriteId); friendStore.updateSidebarFriendsList(); ref.$isDeleted = true; @@ -346,8 +350,7 @@ export const useFavoriteStore = defineStore('Favorite', () => { function expireFavorites() { friendStore.localFavoriteFriends.clear(); - cachedFavorites.value.clear(); - cachedFavoritesByObjectId.value.clear(); + cachedFavorites.clear(); state.favoriteObjects.clear(); state.favoriteFriends_ = []; state.favoriteWorlds_ = []; @@ -399,7 +402,7 @@ export const useFavoriteStore = defineStore('Favorite', () => { */ async function applyFavorite(type, objectId, sortTop = false) { let ref; - const favorite = cachedFavoritesByObjectId.value.get(objectId); + const favorite = cachedFavoritesByObjectId.value(objectId); let ctx = state.favoriteObjects.get(objectId); if (typeof favorite !== 'undefined') { let isTypeChanged = false; @@ -690,7 +693,7 @@ export const useFavoriteStore = defineStore('Favorite', () => { } // update favorites - for (ref of cachedFavorites.value.values()) { + for (ref of cachedFavorites.values()) { if (ref.$isDeleted) { continue; } @@ -789,7 +792,7 @@ export const useFavoriteStore = defineStore('Favorite', () => { * @returns {any} */ function applyFavoriteCached(json) { - let ref = cachedFavorites.value.get(json.id); + let ref = cachedFavorites.get(json.id); if (typeof ref === 'undefined') { ref = { id: '', @@ -803,8 +806,7 @@ export const useFavoriteStore = defineStore('Favorite', () => { // ...json }; - cachedFavorites.value.set(ref.id, ref); - cachedFavoritesByObjectId.value.set(ref.favoriteId, ref); + cachedFavorites.set(ref.id, ref); if ( ref.type === 'friend' && (generalSettingsStore.localFavoriteFriendsGroups.length === 0 || @@ -834,7 +836,7 @@ export const useFavoriteStore = defineStore('Favorite', () => { * */ function deleteExpiredFavorites() { - for (const ref of cachedFavorites.value.values()) { + for (const ref of cachedFavorites.values()) { if (ref.$isDeleted || ref.$isExpired === false) { continue; } @@ -872,7 +874,7 @@ export const useFavoriteStore = defineStore('Favorite', () => { avatar: [0, favoriteRequest.getFavoriteAvatars] }; const tags = []; - for (const ref of cachedFavorites.value.values()) { + for (const ref of cachedFavorites.values()) { if (ref.$isDeleted) { continue; } @@ -1304,7 +1306,7 @@ export const useFavoriteStore = defineStore('Favorite', () => { avatarStore.avatarDialog.id === avatarId ) { avatarStore.avatarDialog.isFavorite = - cachedFavoritesByObjectId.value.has(avatarId); + cachedFavoritesByObjectId.value(avatarId); } // update UI @@ -1431,7 +1433,7 @@ export const useFavoriteStore = defineStore('Favorite', () => { worldStore.worldDialog.id === worldId ) { worldStore.worldDialog.isFavorite = - cachedFavoritesByObjectId.value.has(worldId); + cachedFavoritesByObjectId.value(worldId); } // update UI diff --git a/src/stores/photon.js b/src/stores/photon.js index 9cfabd54..be7bd43e 100644 --- a/src/stores/photon.js +++ b/src/stores/photon.js @@ -572,9 +572,7 @@ export const usePhotonStore = defineStore('Photon', () => { hudTimeout.forEach((item) => { if ( timeoutHudOverlayFilter.value === 'VIP' && - favoriteStore.cachedFavoritesByObjectId.has( - item.userId - ) + favoriteStore.cachedFavoritesByObjectId(item.userId) ) { filteredHudTimeout.push(item); } else if ( diff --git a/src/stores/user.js b/src/stores/user.js index 8ee456f3..f894d785 100644 --- a/src/stores/user.js +++ b/src/stores/user.js @@ -835,8 +835,9 @@ export const useUserStore = defineStore('User', () => { } } } - D.isFavorite = - favoriteStore.cachedFavoritesByObjectId.has(D.id); + D.isFavorite = favoriteStore.cachedFavoritesByObjectId( + D.id + ); if (D.ref.friendRequestStatus === 'incoming') { D.incomingRequest = true; } else if (D.ref.friendRequestStatus === 'outgoing') { diff --git a/src/stores/vrcx.js b/src/stores/vrcx.js index 43b9c360..b762780e 100644 --- a/src/stores/vrcx.js +++ b/src/stores/vrcx.js @@ -262,7 +262,7 @@ export const useVrcxStore = defineStore('Vrcx', () => { }); worldStore.cachedWorlds.forEach((ref, id) => { if ( - !favoriteStore.cachedFavoritesByObjectId.has(id) && + !favoriteStore.cachedFavoritesByObjectId(id) && ref.authorId !== userStore.currentUser.id && !favoriteStore.localWorldFavoritesList.includes(id) ) { @@ -271,7 +271,7 @@ export const useVrcxStore = defineStore('Vrcx', () => { }); avatarStore.cachedAvatars.forEach((ref, id) => { if ( - !favoriteStore.cachedFavoritesByObjectId.has(id) && + !favoriteStore.cachedFavoritesByObjectId(id) && ref.authorId !== userStore.currentUser.id && !favoriteStore.localAvatarFavoritesList.includes(id) && !avatarStore.avatarHistory.has(id) diff --git a/src/stores/world.js b/src/stores/world.js index a93999eb..a3340e3d 100644 --- a/src/stores/world.js +++ b/src/stores/world.js @@ -142,7 +142,7 @@ export const useWorldStore = defineStore('World', () => { if (D.id === args.ref.id) { D.loading = false; D.ref = args.ref; - D.isFavorite = favoriteStore.cachedFavoritesByObjectId.has( + D.isFavorite = favoriteStore.cachedFavoritesByObjectId( D.id ); if (!D.isFavorite) { diff --git a/src/views/Favorites/components/FavoritesAvatarLocalHistoryItem.vue b/src/views/Favorites/components/FavoritesAvatarLocalHistoryItem.vue index 7871affb..22f4dc94 100644 --- a/src/views/Favorites/components/FavoritesAvatarLocalHistoryItem.vue +++ b/src/views/Favorites/components/FavoritesAvatarLocalHistoryItem.vue @@ -17,7 +17,7 @@ style="margin-left: 5px" @click.stop="selectAvatarWithConfirmation(favorite.id)"> -