mirror of
https://github.com/Sonarr/Sonarr.git
synced 2026-04-26 22:56:23 -04:00
Convert getLanguageName to hook
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import { useCallback } from 'react';
|
||||
import useApiQuery from 'Helpers/Hooks/useApiQuery';
|
||||
|
||||
interface LanguageResponse {
|
||||
identifier: string;
|
||||
}
|
||||
|
||||
function getDisplayName(code: string) {
|
||||
return Intl.DisplayNames
|
||||
? new Intl.DisplayNames([code], { type: 'language' })
|
||||
: null;
|
||||
}
|
||||
|
||||
const useLanguage = () => {
|
||||
return useApiQuery<LanguageResponse>({
|
||||
path: '/localization/language',
|
||||
queryOptions: {
|
||||
staleTime: Infinity,
|
||||
gcTime: Infinity,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export const useInitializeLanguage = () => {
|
||||
useLanguage();
|
||||
};
|
||||
|
||||
const useLanguageName = () => {
|
||||
const { data } = useLanguage();
|
||||
|
||||
const getLanguageName = useCallback(
|
||||
(code: string): string => {
|
||||
const languageNames = data?.identifier
|
||||
? getDisplayName(data.identifier)
|
||||
: getDisplayName('en');
|
||||
|
||||
if (!languageNames) {
|
||||
return code;
|
||||
}
|
||||
|
||||
try {
|
||||
return languageNames.of(code) ?? code;
|
||||
} catch {
|
||||
return code;
|
||||
}
|
||||
},
|
||||
[data]
|
||||
);
|
||||
|
||||
return getLanguageName;
|
||||
};
|
||||
|
||||
export default useLanguageName;
|
||||
Reference in New Issue
Block a user