From 1122def2c05de9520521f0f356e0b24ccd404301 Mon Sep 17 00:00:00 2001 From: mihaic195 Date: Thu, 1 Jul 2021 11:47:27 +0300 Subject: [PATCH] update fetch to also handle errors --- pages/settings/teams.tsx | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/pages/settings/teams.tsx b/pages/settings/teams.tsx index 5ad5db348e..ca6b21c911 100644 --- a/pages/settings/teams.tsx +++ b/pages/settings/teams.tsx @@ -1,30 +1,37 @@ -import { GetServerSideProps } from "next"; import Head from 'next/head'; -import prisma from '../../lib/prisma'; -import Modal from '../../components/Modal'; import Shell from '../../components/Shell'; import SettingsShell from '../../components/Settings'; import { useEffect, useState } from 'react'; -import { useSession, getSession } from 'next-auth/client'; +import { useSession } from 'next-auth/client'; import { UsersIcon, } from "@heroicons/react/outline"; import TeamList from "../../components/team/TeamList"; import TeamListItem from "../../components/team/TeamListItem"; -export default function Teams(props) { - +export default function Teams() { const [session, loading] = useSession(); const [teams, setTeams] = useState([]); const [invites, setInvites] = useState([]); const [showCreateTeamModal, setShowCreateTeamModal] = useState(false); - const loadData = () => fetch('/api/user/membership').then((res: any) => res.json()).then( - (data) => { + const handleErrors = async (resp) => { + if (!resp.ok) { + const err = await resp.json(); + throw new Error(err.message); + } + return resp.json(); + } + + const loadData = () => { + fetch('/api/user/membership') + .then(handleErrors) + .then((data) => { setTeams(data.membership.filter((m) => m.role !== "INVITEE")); setInvites(data.membership.filter((m) => m.role === "INVITEE")); - } - ); + }) + .catch(console.log); + } useEffect(() => { loadData(); @@ -36,6 +43,7 @@ export default function Teams(props) { const createTeam = (e) => { e.preventDefault(); + return fetch('/api/teams', { method: 'POST', body: JSON.stringify({ name: e.target.elements['name'].value }), @@ -157,14 +165,3 @@ export default function Teams(props) { ); } - -export const getServerSideProps: GetServerSideProps = async (context) => { - const session = await getSession(context); - if (!session) { - return { redirect: { permanent: false, destination: "/auth/login" } }; - } - - return { - props: { }, // will be passed to the page component as props - }; -};