diff options
author | 2021-09-02 22:28:11 +0200 | |
---|---|---|
committer | 2021-09-02 23:54:56 +0200 | |
commit | f08f6ca0a9d337efff280d4d1669a41b5d9c31c2 (patch) | |
tree | 7dee778ba742deb5f499f2aa08a1ba040606d633 /hooks/useSettings.js | |
parent | 9f74c550927671f4ded301d0cf3e9d592716375c (diff) | |
download | my_apps-f08f6ca0a9d337efff280d4d1669a41b5d9c31c2.tar.gz my_apps-f08f6ca0a9d337efff280d4d1669a41b5d9c31c2.tar.bz2 my_apps-f08f6ca0a9d337efff280d4d1669a41b5d9c31c2.zip |
finish translations, force maximize
Diffstat (limited to 'hooks/useSettings.js')
-rw-r--r-- | hooks/useSettings.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/hooks/useSettings.js b/hooks/useSettings.js new file mode 100644 index 0000000..90ee72d --- /dev/null +++ b/hooks/useSettings.js @@ -0,0 +1,50 @@ +import React, { createContext, useState, useEffect, useContext } from 'react' +import translations from 'configs/translations' +import useUser from 'hooks/useUser' + +const SettingsContext = createContext() + +export const SettingsProvider = ({children}) => { + const defaultSettings = {theme: 'green', language: 'en'} + const {user} = useUser() + const [data, setData] = useState() + + const setSettings = s => { + if (typeof window !== "undefined") { + window.localStorage.setItem('loggedOutSettings', JSON.stringify(s(data))) + } + setData(s) + } + + const t = key => data && data.language && translations[data.language][key] + ? translations[data.language][key] + ? translations[data.language][key] + : translations.en[key] + : '...' + + useEffect(() => { + const loggedOutSettings = JSON.parse(localStorage.getItem('loggedOutSettings')) + + if (user && user.isLoggedIn) { + const settings = {theme: user.theme, language: user.language} + if (typeof window !== "undefined") { + window.localStorage.setItem('loggedOutSettings', JSON.stringify(settings)) + } + setData(settings) + } else if (loggedOutSettings) { + setData(loggedOutSettings) + } else { + setData(defaultSettings) + } + }, [user]) + + return ( + <SettingsContext.Provider value={{settings: data, setSettings, t}}> + {children} + </SettingsContext.Provider> + ) +} + +const useSettings = () => useContext(SettingsContext) + +export default useSettings |