1import React, {createContext, useCallback, useState} from "react";
2
3export const TIME_FORMAT_24H = "24h";
4export const TIME_FORMAT_12H = "12h";
5export const SPEED_UNIT_MBPS = "mbps";
6export const SPEED_UNIT_MBYTES = "mbytes";
7
8const STORAGE_KEY = "preferences";
9
10const DEFAULTS = {
11 timeFormat: TIME_FORMAT_24H,
12 speedUnit: SPEED_UNIT_MBPS
13};
14
15const loadPreferences = () => {
16 try {
17 const raw = localStorage.getItem(STORAGE_KEY);
18 if (!raw) return {...DEFAULTS};
19 const parsed = JSON.parse(raw);
20 return {...DEFAULTS, ...parsed};
21 } catch {
22 return {...DEFAULTS};
23 }
24};
25
26const persistPreferences = (preferences) => {
27 try {
28 localStorage.setItem(STORAGE_KEY, JSON.stringify(preferences));
29 } catch {}
30};
31
32export const PreferencesContext = createContext({});
33
34export const PreferencesProvider = (props) => {
35 const [preferences, setPreferences] = useState(loadPreferences);
36
37 const updatePreferences = useCallback((partial) => {
38 setPreferences(prev => {
39 const next = {...prev, ...partial};
40 persistPreferences(next);
41 return next;
42 });
43 }, []);
44
45 return (
46 <PreferencesContext.Provider value={[preferences, updatePreferences]}>
47 {props.children}
48 </PreferencesContext.Provider>
49 );
50};
51