Files
Lieux-wow/src/settings-context.tsx
T
2020-07-10 23:54:27 +03:00

51 lines
1.2 KiB
TypeScript

import * as React from 'react'
import { createContext, useState } from 'react'
import ru from './locales/ru.json'
import en from './locales/en.json'
export interface Settings {
language: typeof ru | typeof en
currentLanguage: string
uiLanguage: string[]
uiSound: boolean
}
interface SettingsContextType {
settings: Settings
saveSettings?: (value: Settings) => void
}
interface Props {
children: React.ReactNode
settings: Settings
}
const defaultSettings: SettingsContextType = {
settings: {
language: ru,
currentLanguage: ru['ui.language'],
uiLanguage: [ru['ui.language'], en['ui.language']],
uiSound: true
}
}
const SettingsContext = createContext(defaultSettings)
export const SettingsProvider = ({children, settings}: Props) => {
const [currentSettings, setCurrentSettings] = useState(settings || defaultSettings)
const saveSettings = (value: Settings) => {
setCurrentSettings(value)
}
return (
<SettingsContext.Provider
value={{settings: currentSettings, saveSettings}}
>
{children}
</SettingsContext.Provider>
)
}
export default SettingsContext