import { createContext, useContext, useState, type ReactNode } from "react"; import { createMMKV } from "react-native-mmkv"; import i18n, { type LanguageCode, type StoredLanguage, getStoredLanguage, setStoredLanguage, resolveLanguage, } from "../i18n"; const storage = createMMKV(); type SettingsContextType = { poolLength: number; setPoolLength: (length: number) => void; language: StoredLanguage; setLanguage: (code: StoredLanguage) => void; }; const SettingsContext = createContext({ poolLength: 25, setPoolLength: () => {}, language: "system", setLanguage: () => {}, }); export function useSettings() { return useContext(SettingsContext); } export function SettingsProvider({ children }: { children: ReactNode }) { const [poolLength, setPoolLengthState] = useState(() => { const stored = storage.getNumber("poolLength"); return stored ?? 25; }); const [language, setLanguageState] = useState(() => { return getStoredLanguage() ?? "system"; }); const setPoolLength = (length: number) => { setPoolLengthState(length); storage.set("poolLength", length); }; const setLanguage = (code: StoredLanguage) => { setLanguageState(code); setStoredLanguage(code); i18n.changeLanguage(resolveLanguage(code)); }; return ( {children} ); }