From ed826cf1bb28a02d9101391a3ebdeb456a107038 Mon Sep 17 00:00:00 2001
From: Paul <paulmakles@gmail.com>
Date: Sun, 1 Aug 2021 21:55:13 +0100
Subject: [PATCH] Add settings closing animation.

---
 src/pages/settings/GenericSettings.tsx | 62 ++++++++++++++------------
 src/pages/settings/Settings.tsx        |  9 ++--
 2 files changed, 37 insertions(+), 34 deletions(-)

diff --git a/src/pages/settings/GenericSettings.tsx b/src/pages/settings/GenericSettings.tsx
index 42dd9f9..c2b0dfe 100644
--- a/src/pages/settings/GenericSettings.tsx
+++ b/src/pages/settings/GenericSettings.tsx
@@ -26,6 +26,7 @@ interface Props {
         id: string;
         icon: Children;
         title: Children;
+        hidden?: boolean;
         hideTitle?: boolean;
     }[];
     custom?: Children;
@@ -51,15 +52,15 @@ export function GenericSettings({
 
     const [closing, setClosing] = useState(false);
     function exitSettings() {
-        setClosing(true);
+        if (history.length > 1) {
+            setClosing(true);
 
-        setTimeout(() => {
-            if (history.length > 0) {
+            setTimeout(() => {
                 history.goBack();
-            } else {
-                history.push("/");
-            }
-        }, 100);
+            }, 100);
+        } else {
+            history.push("/");
+        }
     }
 
     useEffect(() => {
@@ -77,6 +78,7 @@ export function GenericSettings({
         <div
             className={classNames(styles.settings, {
                 [styles.closing]: closing,
+                [styles.native]: window.isNative,
             })}
             data-mobile={isTouchscreenDevice}>
             <Helmet>
@@ -121,28 +123,30 @@ export function GenericSettings({
             {(!isTouchscreenDevice || typeof page === "undefined") && (
                 <div className={styles.sidebar}>
                     <div className={styles.container}>
-                        {pages.map((entry, i) => (
-                            <>
-                                {entry.category && (
-                                    <Category
-                                        variant="uniform"
-                                        text={entry.category}
-                                    />
-                                )}
-                                <ButtonItem
-                                    active={
-                                        page === entry.id ||
-                                        (i === 0 &&
-                                            !isTouchscreenDevice &&
-                                            typeof page === "undefined")
-                                    }
-                                    onClick={() => switchPage(entry.id)}
-                                    compact>
-                                    {entry.icon} {entry.title}
-                                </ButtonItem>
-                                {entry.divider && <LineDivider />}
-                            </>
-                        ))}
+                        {pages.map((entry, i) =>
+                            entry.hidden ? undefined : (
+                                <>
+                                    {entry.category && (
+                                        <Category
+                                            variant="uniform"
+                                            text={entry.category}
+                                        />
+                                    )}
+                                    <ButtonItem
+                                        active={
+                                            page === entry.id ||
+                                            (i === 0 &&
+                                                !isTouchscreenDevice &&
+                                                typeof page === "undefined")
+                                        }
+                                        onClick={() => switchPage(entry.id)}
+                                        compact>
+                                        {entry.icon} {entry.title}
+                                    </ButtonItem>
+                                    {entry.divider && <LineDivider />}
+                                </>
+                            ),
+                        )}
                         {custom}
                     </div>
                 </div>
diff --git a/src/pages/settings/Settings.tsx b/src/pages/settings/Settings.tsx
index c5911dd..01c6e50 100644
--- a/src/pages/settings/Settings.tsx
+++ b/src/pages/settings/Settings.tsx
@@ -104,6 +104,7 @@ export default function Settings() {
                 },
                 {
                     id: "native",
+                    hidden: !window.isNative,
                     icon: <Desktop size={20} />,
                     title: <Text id="app.settings.pages.native.title" />,
                 },
@@ -140,11 +141,9 @@ export default function Settings() {
                 <Route path="/settings/sync">
                     <Sync />
                 </Route>,
-                window.isNative && (
-                    <Route path="/settings/native">
-                        <Native />
-                    </Route>
-                ),
+                <Route path="/settings/native">
+                    <Native />
+                </Route>,
                 <Route path="/settings/experiments">
                     <ExperimentsPage />
                 </Route>,
-- 
GitLab