add @tanstack/query

This commit is contained in:
pa
2026-03-06 18:14:24 +09:00
parent 7d2bb022a4
commit e665b3815d
40 changed files with 2171 additions and 232 deletions

View File

@@ -1,10 +1,27 @@
import { useFavoriteStore, useUserStore } from '../stores';
import { request } from '../service/request';
import {
entityQueryPolicies,
fetchWithEntityPolicy,
queryClient,
queryKeys
} from '../query';
function getCurrentUserId() {
return useUserStore().currentUser.id;
}
function refetchActiveFavoriteQueries() {
queryClient
.invalidateQueries({
queryKey: ['favorite'],
refetchType: 'active'
})
.catch((err) => {
console.error('Failed to refresh favorite queries:', err);
});
}
const favoriteReq = {
getFavoriteLimits() {
return request('auth/user/favoritelimits', {
@@ -17,6 +34,17 @@ const favoriteReq = {
});
},
getCachedFavoriteLimits() {
return fetchWithEntityPolicy({
queryKey: queryKeys.favoriteLimits(),
policy: entityQueryPolicies.favoriteCollection,
queryFn: () => favoriteReq.getFavoriteLimits()
}).then(({ data, cache }) => ({
...data,
cache
}));
},
/**
* @type {import('../types/api/favorite').GetFavorites}
*/
@@ -33,6 +61,17 @@ const favoriteReq = {
});
},
getCachedFavorites(params) {
return fetchWithEntityPolicy({
queryKey: queryKeys.favorites(params),
policy: entityQueryPolicies.favoriteCollection,
queryFn: () => favoriteReq.getFavorites(params)
}).then(({ data, cache }) => ({
...data,
cache
}));
},
/**
* @type {import('../types/api/favorite').AddFavorite}
*/
@@ -46,6 +85,7 @@ const favoriteReq = {
params
};
useFavoriteStore().handleFavoriteAdd(args);
refetchActiveFavoriteQueries();
return args;
});
},
@@ -63,6 +103,7 @@ const favoriteReq = {
params
};
useFavoriteStore().handleFavoriteDelete(params.objectId);
refetchActiveFavoriteQueries();
return args;
});
},
@@ -84,6 +125,17 @@ const favoriteReq = {
});
},
getCachedFavoriteGroups(params) {
return fetchWithEntityPolicy({
queryKey: queryKeys.favoriteGroups(params),
policy: entityQueryPolicies.favoriteCollection,
queryFn: () => favoriteReq.getFavoriteGroups(params)
}).then(({ data, cache }) => ({
...data,
cache
}));
},
/**
*
* @param {{ type: string, group: string, displayName?: string, visibility?: string }} params group is a name
@@ -101,6 +153,7 @@ const favoriteReq = {
json,
params
};
refetchActiveFavoriteQueries();
return args;
});
},
@@ -125,6 +178,7 @@ const favoriteReq = {
params
};
useFavoriteStore().handleFavoriteGroupClear(args);
refetchActiveFavoriteQueries();
return args;
});
},
@@ -145,6 +199,17 @@ const favoriteReq = {
});
},
getCachedFavoriteWorlds(params) {
return fetchWithEntityPolicy({
queryKey: queryKeys.favoriteWorlds(params),
policy: entityQueryPolicies.favoriteCollection,
queryFn: () => favoriteReq.getFavoriteWorlds(params)
}).then(({ data, cache }) => ({
...data,
cache
}));
},
/**
* @type {import('../types/api/favorite').GetFavoriteAvatars}
*/
@@ -159,6 +224,17 @@ const favoriteReq = {
};
return args;
});
},
getCachedFavoriteAvatars(params) {
return fetchWithEntityPolicy({
queryKey: queryKeys.favoriteAvatars(params),
policy: entityQueryPolicies.favoriteCollection,
queryFn: () => favoriteReq.getFavoriteAvatars(params)
}).then(({ data, cache }) => ({
...data,
cache
}));
}
};