From 7d8a453ea907acf79beb5bdf43432a35ed52fd10 Mon Sep 17 00:00:00 2001
From: Austin <pixelrazor@gmail.com>
Date: Mon, 20 Mar 2023 00:40:29 +0000
Subject: [PATCH] Refactor

---
 app/index.html            |  5 +++++
 app/index_local.html      |  5 +++++
 app/src/components/app.rs | 17 +++++++++++++++--
 3 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/app/index.html b/app/index.html
index fd3c830..d99c083 100644
--- a/app/index.html
+++ b/app/index.html
@@ -34,6 +34,11 @@
     <link
       rel="stylesheet"
       href="/static/style.css" />
+    <script>
+      function inDarkMode(){
+        return darkmode.inDarkMode;
+      }
+    </script>
     <meta name="viewport" content="width=device-width, initial-scale=1">
 </head>
 
diff --git a/app/index_local.html b/app/index_local.html
index e6c59eb..59f0955 100644
--- a/app/index_local.html
+++ b/app/index_local.html
@@ -31,6 +31,11 @@
     <link
       rel="stylesheet"
       href="/static/style.css" />
+    <script>
+      function inDarkMode(){
+        return darkmode.inDarkMode;
+      }
+    </script>
     <meta name="viewport" content="width=device-width, initial-scale=1">
 </head>
 
diff --git a/app/src/components/app.rs b/app/src/components/app.rs
index 0de9bb4..848c7a3 100644
--- a/app/src/components/app.rs
+++ b/app/src/components/app.rs
@@ -34,6 +34,19 @@ use wasm_bindgen::prelude::*;
 extern "C" {
   #[wasm_bindgen(js_namespace = darkmode)]
   fn toggleDarkMode(doSave: bool);
+
+  #[wasm_bindgen]
+  fn inDarkMode() -> bool;
+}
+
+#[function_component(DarkModeToggle)]
+pub fn dark_mode_toggle() -> Html {
+  html! {
+    <div class="form-check form-switch">
+      <input class="form-check-input" onclick={|_| toggleDarkMode(true)} type="checkbox" id="darkModeToggle" checked={inDarkMode()}/>
+      <label class="form-check-label" for="darkModeToggle">{"Dark mode"}</label>
+    </div>
+  }
 }
 
 #[function_component(AppContainer)]
@@ -289,7 +302,6 @@ impl App {
                   if let Some((user_id, _)) = &self.user_info {
                     html! {
                       <div class="dropdown text-end">
-                        <input class="form-check-input" onclick={Callback::from(move |_| toggleDarkMode(true))} type="checkbox" id="darkModeToggle"/>
                         <a href="#"
                           class="d-block text-body text-decoration-none dropdown-toggle"
                           id="dropdownUser"
@@ -328,6 +340,7 @@ impl App {
                     }
                   } else { html!{} }
                 }
+                <DarkModeToggle />
               </div>
             </div>
           </header>
@@ -336,7 +349,7 @@ impl App {
 
     fn view_footer(&self) -> Html {
         html! {
-          <footer class="text-center text-muted fixed-bottom bg-light py-2">
+          <footer class="text-center fixed-bottom bg-light py-2">
             <div>
               <span>{format!("LLDAP version {}", env!("CARGO_PKG_VERSION"))}</span>
             </div>