aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/user/preferences.py3
-rw-r--r--pages/_app.tsx42
-rw-r--r--pages/user.tsx2
3 files changed, 44 insertions, 3 deletions
diff --git a/api/user/preferences.py b/api/user/preferences.py
index 4ee48bf..5d46f5f 100644
--- a/api/user/preferences.py
+++ b/api/user/preferences.py
@@ -1,6 +1,7 @@
from flask import Blueprint, request
from db import cursor
from auth.login_token import token_login
+import json
preferences = Blueprint('preferences', __name__)
@@ -16,7 +17,7 @@ def index():
if not login: return "", 403
user_prefs = cursor.execute("select preferences from users where user_id = ?", [login]).fetchone()
- return { "preferences": user_prefs[0] }, 200
+ return { "preferences": json.loads(user_prefs[0]) }, 200
dynamic_route = ["/user", preferences]
diff --git a/pages/_app.tsx b/pages/_app.tsx
index 39b6372..08338d0 100644
--- a/pages/_app.tsx
+++ b/pages/_app.tsx
@@ -1,10 +1,50 @@
+import Head from 'next/head';
+import axios from 'axios';
+import { useState, useEffect } from 'react';
+
+import { userPreferences } from '../api/api';
+
import '../styles/global.css';
import '../styles/dark.css';
import '../styles/disk.css';
-import Head from "next/head";
+function applyPreferences(preferences: userPreferences) {
+ if(typeof preferences === "undefined") return;
+ if(typeof preferences.darkMode !== "undefined")
+ document.getElementsByTagName("html")[0].classList[preferences.darkMode ? "add" : "remove"]("dark");
+}
export default function VierOpEenRijWebsite({ Component, pageProps }) {
+ var [gotData, setGotData] = useState(false);
+ var [preferences, setPreferences] = useState<userPreferences>();
+
+ useEffect(() => {(async() => {
+ if (gotData) return;
+ if (typeof window === "undefined") return;
+ if (!document.cookie.includes("token")) return;
+
+ var local_prefs = window.localStorage.getItem("preferences");
+ if (local_prefs) {
+ var local_prefs_json = JSON.parse(local_prefs) as userPreferences;
+ console.log(typeof local_prefs_json);
+ setPreferences(local_prefs_json);
+ applyPreferences(local_prefs_json);
+ }
+
+ var preferencesReq = await axios.request<{ preferences: userPreferences; }>({
+ method: "get",
+ url: `/api/user/preferences`,
+ headers: {"content-type": "application/json"}
+ });
+
+ window.localStorage.setItem("preferences", JSON.stringify(preferencesReq.data.preferences));
+ setPreferences(preferencesReq.data.preferences);
+
+ setGotData(true);
+ })()})
+
+ useEffect(() => applyPreferences(preferences), [preferences]);
+
return <div>
<Head>
<title>4 op een rij</title>
diff --git a/pages/user.tsx b/pages/user.tsx
index d0c6f5b..f190efd 100644
--- a/pages/user.tsx
+++ b/pages/user.tsx
@@ -115,7 +115,7 @@ export default function AccountPage() {
}
setGotData(true);
- })()})
+ })()});
return <div>
<NavBar/>