1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-26 22:56:23 -04:00

Use react-query for Languages

This commit is contained in:
Mark McDowall
2026-02-14 12:25:49 -08:00
parent 236978a9b1
commit 5bac016f0c
10 changed files with 107 additions and 132 deletions
+65
View File
@@ -0,0 +1,65 @@
import { useMemo } from 'react';
import useApiQuery from 'Helpers/Hooks/useApiQuery';
import Language from 'Language/Language';
interface LanguageFilter {
[key: string]: boolean | undefined;
includeAny: boolean;
includeOriginal?: boolean;
includeUnknown?: boolean;
}
const PATH = '/language';
export const useLanguages = () => {
return useApiQuery<Language[]>({
path: PATH,
queryOptions: {
gcTime: Infinity,
staleTime: Infinity,
},
});
};
export const useFilteredLanguages = (
excludeLanguages: LanguageFilter = { includeAny: true }
) => {
const { data, isFetching, isFetched, error } = useLanguages();
const filteredItems = useMemo(() => {
if (!data) return [];
return data.filter((lang) => !excludeLanguages[lang.name]);
}, [data, excludeLanguages]);
return {
data: filteredItems,
isFetching,
isFetched,
error,
};
};
export const useLanguageById = (id: number | undefined) => {
const { data } = useLanguages();
return useMemo(() => {
if (id === undefined || !data) {
return undefined;
}
return data.find((language) => language.id === id);
}, [data, id]);
};
export const useLanguageByName = (name: string | undefined) => {
const { data } = useLanguages();
return useMemo(() => {
if (!name || !data) {
return undefined;
}
return data.find((language) => language.name === name);
}, [data, name]);
};