From 00b4f38a4c6f3c1039873cc8e274e24f207d81a7 Mon Sep 17 00:00:00 2001
From: crupest <crupest@outlook.com>
Date: Fri, 7 Aug 2020 18:27:04 +0800
Subject: Create home page for offline.

---
 .../ClientApp/src/app/home/BoardWithoutUser.tsx    | 61 ++++++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 Timeline/ClientApp/src/app/home/BoardWithoutUser.tsx

(limited to 'Timeline/ClientApp/src/app/home/BoardWithoutUser.tsx')

diff --git a/Timeline/ClientApp/src/app/home/BoardWithoutUser.tsx b/Timeline/ClientApp/src/app/home/BoardWithoutUser.tsx
new file mode 100644
index 00000000..4b30fcc4
--- /dev/null
+++ b/Timeline/ClientApp/src/app/home/BoardWithoutUser.tsx
@@ -0,0 +1,61 @@
+import React from 'react';
+import { Row, Col } from 'reactstrap';
+
+import { TimelineInfo } from '../data/timeline';
+
+import { getHttpTimelineClient } from '../http/timeline';
+
+import TimelineBoard from './TimelineBoard';
+import OfflineBoard from './OfflineBoard';
+
+const BoardWithoutUser: React.FC = () => {
+  const [publicTimelines, setPublicTimelines] = React.useState<
+    TimelineInfo[] | 'offline' | 'loading'
+  >('loading');
+
+  React.useEffect(() => {
+    let subscribe = true;
+    if (publicTimelines === 'loading') {
+      void getHttpTimelineClient()
+        .listTimeline({ visibility: 'Public' })
+        .then(
+          (timelines) => {
+            if (subscribe) {
+              setPublicTimelines(timelines);
+            }
+          },
+          () => {
+            setPublicTimelines('offline');
+          }
+        );
+    }
+    return () => {
+      subscribe = false;
+    };
+  }, [publicTimelines]);
+
+  return (
+    <Row className="my-2 justify-content-center">
+      {publicTimelines === 'offline' ? (
+        <Col sm="8" lg="6">
+          <OfflineBoard
+            onReload={() => {
+              setPublicTimelines('loading');
+            }}
+          />
+        </Col>
+      ) : (
+        <Col sm="8" lg="6">
+          <TimelineBoard
+            timelines={publicTimelines}
+            onReload={() => {
+              setPublicTimelines('loading');
+            }}
+          />
+        </Col>
+      )}
+    </Row>
+  );
+};
+
+export default BoardWithoutUser;
-- 
cgit v1.2.3

