From 395069f8cecd2deab2dfe1a2d7b97f379413e009 Mon Sep 17 00:00:00 2001
From: Armand Philippot <git@armandphilippot.com>
Date: Sun, 16 Jan 2022 14:18:54 +0100
Subject: chore: add a spinner when content is loading

---
 src/components/Widgets/TopicsList/TopicsList.tsx | 38 +++++++++++++++---------
 1 file changed, 24 insertions(+), 14 deletions(-)

(limited to 'src/components/Widgets/TopicsList/TopicsList.tsx')

diff --git a/src/components/Widgets/TopicsList/TopicsList.tsx b/src/components/Widgets/TopicsList/TopicsList.tsx
index 5bf12b9..c7843b7 100644
--- a/src/components/Widgets/TopicsList/TopicsList.tsx
+++ b/src/components/Widgets/TopicsList/TopicsList.tsx
@@ -1,3 +1,4 @@
+import Spinner from '@components/Spinner/Spinner';
 import { ExpandableWidget, List } from '@components/WidgetParts';
 import { t } from '@lingui/macro';
 import { getAllSubjects } from '@services/graphql/queries';
@@ -21,24 +22,33 @@ const TopicsList = ({
 
   const { data, error } = useSWR('/api/subjects', getAllSubjects);
 
-  if (error) return <div>{t`Failed to load.`}</div>;
-  if (!data) return <div>{t`Loading...`}</div>;
+  const getList = () => {
+    if (error) return <ul>{t`Failed to load.`}</ul>;
+    if (!data)
+      return (
+        <ul>
+          <Spinner />
+        </ul>
+      );
 
-  const subjects = data.map((subject) => {
-    return currentTopicSlug !== subject.slug ? (
-      <li key={subject.databaseId}>
-        <Link href={`/sujet/${subject.slug}`}>
-          <a>{subject.title}</a>
-        </Link>
-      </li>
-    ) : (
-      ''
-    );
-  });
+    const subjects = data.map((subject) => {
+      return currentTopicSlug !== subject.slug ? (
+        <li key={subject.databaseId}>
+          <Link href={`/sujet/${subject.slug}`}>
+            <a>{subject.title}</a>
+          </Link>
+        </li>
+      ) : (
+        ''
+      );
+    });
+
+    return <List items={subjects} />;
+  };
 
   return (
     <ExpandableWidget title={title} titleLevel={titleLevel} withBorders={true}>
-      <List items={subjects} />
+      {getList()}
     </ExpandableWidget>
   );
 };
-- 
cgit v1.2.3

