update fetch to also handle errors

pull/333/head
mihaic195 2021-07-01 11:47:27 +03:00
parent 8b00475b27
commit 1122def2c0
No known key found for this signature in database
GPG Key ID: 18E6B791693DB416
1 changed files with 18 additions and 21 deletions

View File

@ -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) {
</Shell>
);
}
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
};
};