mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-10 04:30:25 +02:00
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import { queryOptions, UseQueryOptions } from '@tanstack/react-query';
|
|
|
|
import { api } from '/@/renderer/api/api-controller';
|
|
import { AlbumListRequest } from '/@/shared/types/domain/album-domain-types';
|
|
|
|
export const getAlbumListQueryKey = (serverId: string, request?: AlbumListRequest) => {
|
|
if (!request) {
|
|
return [serverId, 'albums'];
|
|
}
|
|
|
|
return [serverId, 'albums', request];
|
|
};
|
|
|
|
export const getInfiniteAlbumListQueryKey = (serverId: string, request?: AlbumListRequest) => {
|
|
if (!request) {
|
|
return [serverId, 'albums', 'infinite'];
|
|
}
|
|
|
|
return [serverId, 'albums', 'infinite', request];
|
|
};
|
|
|
|
export const getAlbumList = async (serverId: string, request: AlbumListRequest) => {
|
|
const [error, response] = await api.controller[serverId]!.album.getList!({
|
|
query: request.query,
|
|
});
|
|
|
|
if (error) {
|
|
throw new Error(error.message);
|
|
}
|
|
|
|
return response;
|
|
};
|
|
|
|
export const getAlbumListQuery = (
|
|
serverId: string,
|
|
request: AlbumListRequest,
|
|
options?: UseQueryOptions,
|
|
) => {
|
|
return queryOptions({
|
|
enabled: !!serverId,
|
|
queryFn: () => getAlbumList(serverId, request),
|
|
queryKey: getAlbumListQueryKey(serverId, request),
|
|
...options,
|
|
});
|
|
};
|