aboutsummaryrefslogtreecommitdiffstats
path: root/hooks/useSettings.js
diff options
context:
space:
mode:
authorGravatar piotrruss <mail@pruss.it> 2021-09-02 22:28:11 +0200
committerGravatar piotrruss <mail@pruss.it> 2021-09-02 23:54:56 +0200
commitf08f6ca0a9d337efff280d4d1669a41b5d9c31c2 (patch)
tree7dee778ba742deb5f499f2aa08a1ba040606d633 /hooks/useSettings.js
parent9f74c550927671f4ded301d0cf3e9d592716375c (diff)
downloadmy_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.js50
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