mirror of
https://github.com/UiO-Gaming/name-100-uio-gamers.git
synced 2026-11-05 13:56:53 +01:00
run linter
This commit is contained in:
1 parent
e4d10f06a5
commit
668a1ffd15
1 file changed
+18
-10
+18
-10
@@ -1,5 +1,5 @@
|
||||
"use client";
|
||||
import React, { createContext, useContext, useEffect, useState } from "react";
|
||||
import React, { createContext, useContext, useSyncExternalStore } from "react";
|
||||
|
||||
type Language = "en" | "no";
|
||||
|
||||
@@ -11,19 +11,27 @@ const LanguageContext = createContext<{
|
||||
setLanguage: () => {},
|
||||
});
|
||||
|
||||
export const LanguageProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
||||
const [language, setLanguageState] = useState<Language>("en");
|
||||
const listeners = new Set<() => void>();
|
||||
|
||||
useEffect(() => {
|
||||
const storedLanguage = localStorage.getItem("language");
|
||||
if (storedLanguage === "en" || storedLanguage === "no") {
|
||||
setLanguageState(storedLanguage);
|
||||
}
|
||||
}, []);
|
||||
const subscribe = (listener: () => void) => {
|
||||
listeners.add(listener);
|
||||
window.addEventListener("storage", listener);
|
||||
return () => {
|
||||
listeners.delete(listener);
|
||||
window.removeEventListener("storage", listener);
|
||||
};
|
||||
};
|
||||
|
||||
const getSnapshot = (): Language => (localStorage.getItem("language") === "no" ? "no" : "en");
|
||||
|
||||
const getServerSnapshot = (): Language => "en";
|
||||
|
||||
export const LanguageProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
||||
const language = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
||||
|
||||
const setLanguage = (lang: Language) => {
|
||||
localStorage.setItem("language", lang);
|
||||
setLanguageState(lang);
|
||||
listeners.forEach((listener) => listener());
|
||||
};
|
||||
|
||||
return <LanguageContext.Provider value={{ language, setLanguage }}>{children}</LanguageContext.Provider>;
|
||||
|
||||
Reference in new issue
Block a user