37 lines
935 B
TypeScript
37 lines
935 B
TypeScript
import { createContext, useContext, useEffect, useState, type ReactNode } from "react";
|
|
import { createMMKV } from "react-native-mmkv";
|
|
|
|
const storage = createMMKV();
|
|
|
|
type SettingsContextType = {
|
|
poolLength: number;
|
|
setPoolLength: (length: number) => void;
|
|
};
|
|
|
|
const SettingsContext = createContext<SettingsContextType>({
|
|
poolLength: 25,
|
|
setPoolLength: () => {},
|
|
});
|
|
|
|
export function useSettings() {
|
|
return useContext(SettingsContext);
|
|
}
|
|
|
|
export function SettingsProvider({ children }: { children: ReactNode }) {
|
|
const [poolLength, setPoolLengthState] = useState<number>(() => {
|
|
const stored = storage.getNumber("poolLength");
|
|
return stored ?? 25;
|
|
});
|
|
|
|
const setPoolLength = (length: number) => {
|
|
setPoolLengthState(length);
|
|
storage.set("poolLength", length);
|
|
};
|
|
|
|
return (
|
|
<SettingsContext.Provider value={{ poolLength, setPoolLength }}>
|
|
{children}
|
|
</SettingsContext.Provider>
|
|
);
|
|
}
|