feat(PBI-76): migrate debug-mode to user-settings store
DebugToggle reads debugMode from user-settings.devTools and toggles via setPref. Removes the standalone stores/debug-store.ts (no consumers left). Body classlist update only fires after the store is hydrated to avoid a flash on initial paint. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e0084228f3
commit
7b33dc9331
2 changed files with 9 additions and 25 deletions
|
|
@ -1,25 +1,24 @@
|
|||
'use client'
|
||||
|
||||
import { useEffect } from 'react'
|
||||
import { useDebugStore } from '@/stores/debug-store'
|
||||
import { useUserSettingsStore } from '@/stores/user-settings/store'
|
||||
|
||||
export function DebugToggle() {
|
||||
const { debugMode, _hydrated, hydrate, toggleDebugMode } = useDebugStore()
|
||||
const debugMode = useUserSettingsStore(
|
||||
(s) => s.entities.settings.devTools?.debugMode ?? false,
|
||||
)
|
||||
const hydrated = useUserSettingsStore((s) => s.context.hydrated)
|
||||
const setPref = useUserSettingsStore((s) => s.setPref)
|
||||
|
||||
useEffect(() => {
|
||||
hydrate(localStorage.getItem('scrum4me:debug-mode') === 'true')
|
||||
}, [hydrate])
|
||||
|
||||
useEffect(() => {
|
||||
if (!_hydrated) return
|
||||
localStorage.setItem('scrum4me:debug-mode', String(debugMode))
|
||||
if (!hydrated) return
|
||||
document.body.classList.toggle('debug-mode', debugMode)
|
||||
}, [debugMode, _hydrated])
|
||||
}, [debugMode, hydrated])
|
||||
|
||||
return (
|
||||
<button
|
||||
type="button"
|
||||
onClick={toggleDebugMode}
|
||||
onClick={() => void setPref(['devTools', 'debugMode'], !debugMode)}
|
||||
aria-label="Debug-modus togglen"
|
||||
aria-pressed={debugMode}
|
||||
data-active={debugMode}
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
import { create } from 'zustand'
|
||||
|
||||
type DebugStore = {
|
||||
debugMode: boolean
|
||||
_hydrated: boolean
|
||||
hydrate: (value: boolean) => void
|
||||
toggleDebugMode: () => void
|
||||
}
|
||||
|
||||
export const useDebugStore = create<DebugStore>((set, get) => ({
|
||||
debugMode: false,
|
||||
_hydrated: false,
|
||||
hydrate: (v) => set({ debugMode: v, _hydrated: true }),
|
||||
toggleDebugMode: () => set({ debugMode: !get().debugMode }),
|
||||
}))
|
||||
Loading…
Add table
Add a link
Reference in a new issue