mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-18 09:04:44 -04:00
26 lines
991 B
TypeScript
26 lines
991 B
TypeScript
import { Reducer } from 'redux'
|
|
import { determineDarkModeBrowserSetting, loadFromLocalStorage, saveToLocalStorage } from './methods'
|
|
import { DarkModeConfig, DarkModeConfigActions, DarkModeConfigActionType, SetDarkModeConfigAction } from './types'
|
|
|
|
export const getInitialState = (): DarkModeConfig => {
|
|
const initialMode = loadFromLocalStorage() ?? determineDarkModeBrowserSetting() ?? {
|
|
darkMode: false
|
|
}
|
|
saveToLocalStorage(initialMode)
|
|
return initialMode
|
|
}
|
|
|
|
export const DarkModeConfigReducer: Reducer<DarkModeConfig, DarkModeConfigActions> = (state: DarkModeConfig = getInitialState(), action: DarkModeConfigActions) => {
|
|
let darkModeConfigState: DarkModeConfig
|
|
switch (action.type) {
|
|
case DarkModeConfigActionType.SET_DARK_MODE:
|
|
darkModeConfigState = {
|
|
...state,
|
|
darkMode: (action as SetDarkModeConfigAction).darkMode
|
|
}
|
|
saveToLocalStorage(darkModeConfigState)
|
|
return darkModeConfigState
|
|
default:
|
|
return state
|
|
}
|
|
}
|