2025-01-27 15:03:48 +03:00
|
|
|
import { useQuery, useSuspenseQuery } from '@tanstack/react-query';
|
|
|
|
|
2025-02-10 01:32:55 +03:00
|
|
|
import { useLibrary, useLibrarySuspense } from '@/features/library/backend/useLibrary';
|
2025-01-27 15:03:48 +03:00
|
|
|
|
2025-02-10 01:32:55 +03:00
|
|
|
import { queryClient } from '../../../backend/queryClient';
|
2025-01-27 15:03:48 +03:00
|
|
|
import { ossApi } from './api';
|
2025-02-12 15:13:37 +03:00
|
|
|
import { OssLoader } from './OssLoader';
|
2025-01-27 15:03:48 +03:00
|
|
|
|
2025-02-12 15:13:37 +03:00
|
|
|
export function useOss({ itemID }: { itemID?: number }) {
|
2025-01-27 15:03:48 +03:00
|
|
|
const { items: libraryItems, isLoading: libraryLoading } = useLibrary();
|
|
|
|
const { data, isLoading, error } = useQuery({
|
|
|
|
...ossApi.getOssQueryOptions({ itemID })
|
|
|
|
});
|
|
|
|
|
|
|
|
const schema = data && !libraryLoading ? new OssLoader(data, libraryItems).produceOSS() : undefined;
|
|
|
|
return { schema: schema, isLoading: isLoading || libraryLoading, error: error };
|
|
|
|
}
|
|
|
|
|
2025-02-12 15:13:37 +03:00
|
|
|
export function useOssSuspense({ itemID }: { itemID: number }) {
|
2025-01-27 15:03:48 +03:00
|
|
|
const { items: libraryItems } = useLibrarySuspense();
|
|
|
|
const { data } = useSuspenseQuery({
|
|
|
|
...ossApi.getOssQueryOptions({ itemID })
|
|
|
|
});
|
|
|
|
const schema = new OssLoader(data!, libraryItems).produceOSS();
|
|
|
|
return { schema };
|
|
|
|
}
|
2025-01-29 23:18:20 +03:00
|
|
|
|
2025-02-12 15:13:37 +03:00
|
|
|
export function prefetchOSS({ itemID }: { itemID?: number }) {
|
2025-01-29 23:18:20 +03:00
|
|
|
if (!itemID) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
return queryClient.prefetchQuery(ossApi.getOssQueryOptions({ itemID }));
|
|
|
|
}
|