Fix moving favorites

This commit is contained in:
Natsumi
2026-01-16 07:00:05 +13:00
parent c430ce1b63
commit 0a1280c100
6 changed files with 24 additions and 13 deletions
+1 -1
View File
@@ -309,7 +309,7 @@ export function $throw(code, error, endpoint) {
if (endpoint?.startsWith('analysis/')) { if (endpoint?.startsWith('analysis/')) {
ignoreError = true; ignoreError = true;
} }
if (endpoint.endsWith('/mutuals') && (code === 403 || code === -1)) { if (endpoint?.endsWith('/mutuals') && (code === 403 || code === -1)) {
ignoreError = true; ignoreError = true;
} }
const text = message.map((s) => escapeTag(s)).join('<br>'); const text = message.map((s) => escapeTag(s)).join('<br>');
+5 -4
View File
@@ -728,6 +728,7 @@ export const useFavoriteStore = defineStore('Favorite', () => {
friendStore.updateLocalFavoriteFriends(); friendStore.updateLocalFavoriteFriends();
isFavoriteLoading.value = false; isFavoriteLoading.value = false;
watchState.isFavoritesLoaded = true; watchState.isFavoritesLoaded = true;
countFavoriteGroups();
} }
}); });
} }
@@ -789,9 +790,8 @@ export const useFavoriteStore = defineStore('Favorite', () => {
friendStore.updateSidebarFavorites(); friendStore.updateSidebarFavorites();
} }
ref.$groupKey = `${ref.type}:${String(ref.tags[0])}`; ref.$groupKey = `${ref.type}:${String(ref.tags[0])}`;
const group = getCachedFavoriteGroupsByTypeName()[ref.$groupKey]; if (!isFavoriteLoading.value) {
if (typeof group !== 'undefined') { countFavoriteGroups();
++group.count;
} }
} else { } else {
if (ref.favoriteId !== json.favoriteId) { if (ref.favoriteId !== json.favoriteId) {
@@ -1631,6 +1631,7 @@ export const useFavoriteStore = defineStore('Favorite', () => {
handleFavoriteAdd, handleFavoriteAdd,
getCachedFavoritesByObjectId, getCachedFavoritesByObjectId,
checkInvalidLocalAvatars, checkInvalidLocalAvatars,
removeInvalidLocalAvatars removeInvalidLocalAvatars,
getCachedFavoriteGroupsByTypeName
}; };
}); });
@@ -83,14 +83,14 @@
addFavoriteAvatar(groupAPI); addFavoriteAvatar(groupAPI);
} }
} else { } else {
moveFavorite(props.currentFavorite.ref, groupAPI, props.type); moveFavorite(props.currentFavorite.ref, groupAPI);
} }
} }
function moveFavorite(ref, group, type) { function moveFavorite(ref, group) {
favoriteRequest.deleteFavorite({ objectId: ref.id }).then(() => { favoriteRequest.deleteFavorite({ objectId: ref.id }).then(() => {
favoriteRequest.addFavorite({ favoriteRequest.addFavorite({
type, type: group.type,
favoriteId: ref.id, favoriteId: ref.id,
tags: group.name tags: group.name
}); });
@@ -100,7 +100,7 @@
function addFavoriteAvatar(groupAPI) { function addFavoriteAvatar(groupAPI) {
return favoriteRequest return favoriteRequest
.addFavorite({ .addFavorite({
type: 'avatar', type: groupAPI.type,
favoriteId: props.currentFavorite.id, favoriteId: props.currentFavorite.id,
tags: groupAPI.name tags: groupAPI.name
}) })
@@ -137,7 +137,7 @@
const { showUserDialog } = useUserStore(); const { showUserDialog } = useUserStore();
const { favoriteAvatarGroups, avatarImportDialogInput, avatarImportDialogVisible, localAvatarFavoriteGroups } = const { favoriteAvatarGroups, avatarImportDialogInput, avatarImportDialogVisible, localAvatarFavoriteGroups } =
storeToRefs(useFavoriteStore()); storeToRefs(useFavoriteStore());
const { addLocalAvatarFavorite, localAvatarFavGroupLength } = useFavoriteStore(); const { addLocalAvatarFavorite, localAvatarFavGroupLength, getCachedFavoritesByObjectId } = useFavoriteStore();
const { showAvatarDialog, applyAvatar } = useAvatarStore(); const { showAvatarDialog, applyAvatar } = useAvatarStore();
const { showFullscreenImageDialog } = useGalleryStore(); const { showFullscreenImageDialog } = useGalleryStore();
@@ -302,7 +302,7 @@
function addFavoriteAvatar(ref, group, message) { function addFavoriteAvatar(ref, group, message) {
return favoriteRequest return favoriteRequest
.addFavorite({ .addFavorite({
type: 'avatar', type: group.type,
favoriteId: ref.id, favoriteId: ref.id,
tags: group.name tags: group.name
}) })
@@ -329,6 +329,9 @@
} }
ref = data[i]; ref = data[i];
if (D.avatarImportFavoriteGroup) { if (D.avatarImportFavoriteGroup) {
if (getCachedFavoritesByObjectId(ref.id)) {
throw new Error('Avatar is already in favorites');
}
await addFavoriteAvatar(ref, D.avatarImportFavoriteGroup, false); await addFavoriteAvatar(ref, D.avatarImportFavoriteGroup, false);
} else if (D.avatarImportLocalFavoriteGroup) { } else if (D.avatarImportLocalFavoriteGroup) {
addLocalAvatarFavorite(ref.id, D.avatarImportLocalFavoriteGroup); addLocalAvatarFavorite(ref.id, D.avatarImportLocalFavoriteGroup);
@@ -121,6 +121,7 @@
const { favoriteFriendGroups, friendImportDialogInput, friendImportDialogVisible } = const { favoriteFriendGroups, friendImportDialogInput, friendImportDialogVisible } =
storeToRefs(useFavoriteStore()); storeToRefs(useFavoriteStore());
const { showFullscreenImageDialog } = useGalleryStore(); const { showFullscreenImageDialog } = useGalleryStore();
const { getCachedFavoritesByObjectId } = useFavoriteStore();
const friendImportDialog = ref({ const friendImportDialog = ref({
loading: false, loading: false,
@@ -234,6 +235,9 @@
break; break;
} }
ref = data[i]; ref = data[i];
if (getCachedFavoritesByObjectId(ref.id)) {
throw new Error('Friend is already in favorites');
}
await addFavoriteUser(ref, D.friendImportFavoriteGroup, false); await addFavoriteUser(ref, D.friendImportFavoriteGroup, false);
removeFromArray(friendImportTable.value.data, ref); removeFromArray(friendImportTable.value.data, ref);
D.userIdList.delete(ref.id); D.userIdList.delete(ref.id);
@@ -250,7 +254,7 @@
function addFavoriteUser(ref, group, message) { function addFavoriteUser(ref, group, message) {
return favoriteRequest return favoriteRequest
.addFavorite({ .addFavorite({
type: 'friend', type: group.type,
favoriteId: ref.id, favoriteId: ref.id,
tags: group.name tags: group.name
}) })
@@ -139,7 +139,7 @@
const { showUserDialog } = useUserStore(); const { showUserDialog } = useUserStore();
const { favoriteWorldGroups, worldImportDialogInput, worldImportDialogVisible, localWorldFavoriteGroups } = const { favoriteWorldGroups, worldImportDialogInput, worldImportDialogVisible, localWorldFavoriteGroups } =
storeToRefs(useFavoriteStore()); storeToRefs(useFavoriteStore());
const { localWorldFavGroupLength, addLocalWorldFavorite } = useFavoriteStore(); const { localWorldFavGroupLength, addLocalWorldFavorite, getCachedFavoritesByObjectId } = useFavoriteStore();
const { showWorldDialog } = useWorldStore(); const { showWorldDialog } = useWorldStore();
const { showFullscreenImageDialog } = useGalleryStore(); const { showFullscreenImageDialog } = useGalleryStore();
@@ -321,6 +321,9 @@
} }
ref = data[i]; ref = data[i];
if (D.worldImportFavoriteGroup) { if (D.worldImportFavoriteGroup) {
if (getCachedFavoritesByObjectId(ref.id)) {
throw new Error('World is already in favorites');
}
await addFavoriteWorld(ref, D.worldImportFavoriteGroup, false); await addFavoriteWorld(ref, D.worldImportFavoriteGroup, false);
} else if (D.worldImportLocalFavoriteGroup) { } else if (D.worldImportLocalFavoriteGroup) {
addLocalWorldFavorite(ref.id, D.worldImportLocalFavoriteGroup); addLocalWorldFavorite(ref.id, D.worldImportLocalFavoriteGroup);