animetix-web / frontend /src /features /labs /hooks /useAudioLab.ts
MissawB's picture
Upload folder using huggingface_hub (part 4)
df2e14d verified
Raw
History Blame Contribute Delete
1.34 kB
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { audioLabService } from '../services/audioLabService';
export const useAudioLab = () => {
const queryClient = useQueryClient();
const QUERY_KEY = ['audiolab-state'];
const { data, isLoading: loading } = useQuery({
queryKey: QUERY_KEY,
queryFn: () => audioLabService.getState(),
refetchOnWindowFocus: false,
});
const processMutation = useMutation({
mutationFn: audioLabService.process,
onSuccess: (newState) => {
queryClient.setQueryData(QUERY_KEY, newState);
},
});
const seiyuuSearchMutation = useMutation({
mutationFn: ({ q, language, origin }: { q: string; language?: string; origin?: string }) =>
audioLabService.searchSeiyuu(q, language, origin),
});
const ingestVoiceMutation = useMutation({
mutationFn: audioLabService.ingestVoice,
});
return {
data,
loading,
processAudio: processMutation.mutateAsync,
searchSeiyuu: (q: string, language?: string, origin?: string) =>
seiyuuSearchMutation.mutateAsync({ q, language, origin }),
ingestVoice: ingestVoiceMutation.mutateAsync,
seiyuuResults: seiyuuSearchMutation.data?.results || [],
isSearchingSeiyuu: seiyuuSearchMutation.isPending,
isIngestingVoice: ingestVoiceMutation.isPending,
};
};