TelegramPWA/src/hooks/useLangString.ts

31 lines
862 B
TypeScript

import { useEffect, useState } from '../lib/teact/teact';
import type { RegularLangKey } from '../types/language';
import { LANG_PACK } from '../config';
import { callApi } from '../api/gramjs';
import useLastCallback from './useLastCallback';
export default function useLangString(key: RegularLangKey, langCode?: string) {
const [value, setValue] = useState<string | undefined>(undefined);
const fetchLangString = useLastCallback(async () => {
if (!langCode) return undefined;
const result = await callApi('fetchLangStrings', {
langCode,
langPack: LANG_PACK,
keys: [key],
});
const langString = result?.strings[0];
if (!langString || typeof langString !== 'string') return undefined;
return langString;
});
useEffect(() => {
fetchLangString().then(setValue);
}, [key, langCode]);
return value;
}