Files
aso/frontend/hospital-portal/src/contexts/LanguageContext.tsx
Linksehat Staging Server 70fc1579e7 update
2024-07-12 08:41:18 +07:00

39 lines
1.1 KiB
TypeScript
Executable File

import React, { createContext, useState, useEffect, useRef } from 'react';
import getLocalizedData from '../LocalizationUtil';
export const LanguageContext = createContext();
export const LanguageProvider = ({ children }) => {
const [currentLocale, setCurrentLocale] = useState(localStorage.getItem('currentLocale') ? localStorage.getItem('currentLocale') : 'id-ID');
const [localeData, setLocaleData] = useState('id');
const cancelToken = useRef(null);
useEffect(() => {
const fetchData = async () => {
const token = { cancelled: false };
cancelToken.current = token;
try {
const data = await getLocalizedData(currentLocale);
if (!cancelToken.current.cancelled) {
setLocaleData(data);
}
} catch (error) {
console.error('Error fetching localized data:', error);
// Tangani kesalahan jika diperlukan
}
};
fetchData();
return () => {
cancelToken.current.cancelled = true;
};
}, [currentLocale]);
return (
<LanguageContext.Provider value={{ currentLocale, setCurrentLocale, localeData }}>
{children}
</LanguageContext.Provider>
);
};