diff --git a/src/pages/admin/signups/index.tsx b/src/pages/admin/signups/index.tsx index 6c4b762..fc4dc96 100644 --- a/src/pages/admin/signups/index.tsx +++ b/src/pages/admin/signups/index.tsx @@ -1,5 +1,6 @@ -import React, { useEffect, useState } from "react"; +import React from "react"; import { NextPage } from "next"; +import useSWR from "swr"; import { formatRelative } from "date-fns"; import { toast } from "react-toastify"; import styled from "styled-components"; @@ -8,6 +9,7 @@ import { Button, Link } from "@components/index"; import AddLink from "@components/AddLink"; import { SignupForm } from "@models/Signup"; import SignupApi from "@api/signupApi"; +import { fetcher, APIPath, API } from "@api/backend"; const URL = "/admin/signups"; @@ -31,57 +33,62 @@ const confirmDelete = async (signup: SignupForm) => { } }; -const renderData = (signupForms: SignupForm[]) => { - if (!signupForms || signupForms.length === 0) { +const Renderer: React.FC = () => { + const api: API = { path: APIPath.SIGNUP_FORMS, authenticated: true }; + const { data: signupForms, error } = useSWR(api, fetcher); + + if (error) { + console.error(error); + return ( +
+ Failed loading events. +
+ ); + } + + if (!signupForms?.length) { return
No signup forms.
; } return ( - - - - - - - - - - - - {signupForms.map((signupForm) => ( - - - - - - - +
+
TitleStart timeEnd timeSign-upsSend email
{signupForm.title_fi}{formatRelative(new Date(signupForm.start_time), new Date())}{formatRelative(new Date(signupForm.end_time), new Date())}ViewSend - confirmDelete(signupForm)}> - Delete - -
+ + + + + + + - ))} - -
TitleStart timeEnd timeSign-upsSend email
+ + + {signupForms.map((signupForm) => ( + + {signupForm.title_fi} + {formatRelative(new Date(signupForm.start_time), new Date())} + {formatRelative(new Date(signupForm.end_time), new Date())} + View + Send + + confirmDelete(signupForm)}> + Delete + + + + ))} + + + ); }; -const AdminSignupPage: NextPage = () => { - const [forms, setForms] = useState(null); - - useEffect(() => { - SignupApi.getForms(true) - .then((res) => setForms(res)); - }, []); - - return ( - -

Sign-up forms

- - {renderData(forms)} -
- ); -}; +const AdminSignupPage: NextPage = () => ( + +

Sign-up forms

+ + +
+); export default AdminSignupPage;