feat: The Other Dude v9.0.1 — full-featured email system
ci: add GitHub Pages deployment workflow for docs site Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
39
frontend/src/hooks/useSimpleConfig.ts
Normal file
39
frontend/src/hooks/useSimpleConfig.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
* useSimpleConfigMode -- Per-device Simple/Standard mode toggle with localStorage persistence.
|
||||
*
|
||||
* Each device independently stores its mode preference. Default is 'standard' (opt-in to Simple).
|
||||
*/
|
||||
|
||||
import { useState, useCallback } from 'react'
|
||||
|
||||
const STORAGE_KEY = 'mikrotik-simple-mode'
|
||||
|
||||
type ConfigMode = 'simple' | 'standard'
|
||||
|
||||
function readPrefs(): Record<string, ConfigMode> {
|
||||
try {
|
||||
const stored = localStorage.getItem(STORAGE_KEY)
|
||||
return stored ? (JSON.parse(stored) as Record<string, ConfigMode>) : {}
|
||||
} catch {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
|
||||
export function useSimpleConfigMode(deviceId: string) {
|
||||
const [mode, setMode] = useState<ConfigMode>(() => {
|
||||
const prefs = readPrefs()
|
||||
return prefs[deviceId] ?? 'standard'
|
||||
})
|
||||
|
||||
const toggleMode = useCallback(
|
||||
(newMode: ConfigMode) => {
|
||||
setMode(newMode)
|
||||
const prefs = readPrefs()
|
||||
prefs[deviceId] = newMode
|
||||
localStorage.setItem(STORAGE_KEY, JSON.stringify(prefs))
|
||||
},
|
||||
[deviceId],
|
||||
)
|
||||
|
||||
return { mode, toggleMode }
|
||||
}
|
||||
Reference in New Issue
Block a user