From 1ad4b7479f051e870bb85748cc50beb77bc2ee30 Mon Sep 17 00:00:00 2001 From: Oliver Barnwell Date: Thu, 14 Oct 2021 14:52:44 +0100 Subject: [PATCH] fix: allow the user to remove loos once again (#1200) --- src/pages/loos/[id]/remove.tsx | 112 ++++++++++++++++++--------------- 1 file changed, 61 insertions(+), 51 deletions(-) diff --git a/src/pages/loos/[id]/remove.tsx b/src/pages/loos/[id]/remove.tsx index 8cf1643bb..f18a2e3ca 100644 --- a/src/pages/loos/[id]/remove.tsx +++ b/src/pages/loos/[id]/remove.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import Head from 'next/head'; import { useUser } from '@auth0/nextjs-auth0'; @@ -12,11 +12,65 @@ import Button from '../../../components/Button'; import Notification from '../../../components/Notification'; import Login from '../../../components/Login'; import PageLoading from '../../../components/PageLoading'; - import { useRouter } from 'next/router'; +import { + useFindLooByIdQuery, + useRemoveLooMutation, +} from '../../../api-client/graphql'; +import { withApollo } from '../../../components/withApollo'; +import { NextPage } from 'next'; const RemovePage = function (props: { match: { params: { id: any } } }) { const { user, error, isLoading } = useUser(); + + const [reason, setReason] = useState(''); + const router = useRouter(); + const { id: selectedLooId } = router.query; + + const { + data: looData, + error: looError, + loading: loadingLooData, + } = useFindLooByIdQuery({ variables: { id: selectedLooId as string } }); + + const [removeLooMutation, { loading: loadingRemove, error: removeError }] = + useRemoveLooMutation(); + + const updateReason = (evt) => { + setReason(evt.currentTarget.value); + }; + + const onSubmit = async (e: { preventDefault: () => void }) => { + e.preventDefault(); + + await removeLooMutation({ + variables: { + id: looData.loo.id, + reason, + }, + }); + + router.push(`/loos/${selectedLooId}?message=removed`); + }; + + if (removeError || looError) { + console.error(removeError || looError); + } + + if (loadingLooData || !looData || looError) { + return ( + + + {loadingLooData ? 'Fetching Toilet Data' : 'Error finding toilet.'} + + + ); + } + + if (!looData.loo.active) { + router.push('/'); + } + if (isLoading) { return ; } @@ -24,51 +78,6 @@ const RemovePage = function (props: { match: { params: { id: any } } }) { if (!user) { return ; } - // const [reason, setReason] = useState(''); - // const router = useRouter(); - // const {id: selectedLooId} = router.query; - - // const { - // isValidating: loadingLooData, - // data: looData, - // error: looError, - // } = useSWR([GET_LOO_BY_ID_QUERY, JSON.stringify({ id: selectedLooId })]); - - // const [doRemove, { loading: loadingRemove, error: removeError }] = - // useMutation(REMOVE_LOO_MUTATION); - - // const updateReason = (evt) => { - // setReason(evt.currentTarget.value); - // }; - - // const onSubmit = async (e: { preventDefault: () => void; }) => { - // e.preventDefault(); - - // await doRemove({ - // id: looData.loo.id, - // reason, - // }); - - // router.push(`/loos/${selectedLooId}?message=removed`); - // }; - - // if (removeError || looError) { - // console.error(removeError || looError); - // } - - // if (loadingLooData || !looData || looError) { - // return ( - // - // - // {loadingLooData ? 'Fetching Toilet Data' : 'Error finding toilet.'} - // - // - // ); - // } - - // if (!looData.loo.active) { - // router.push('/'); - // } return ( @@ -89,7 +98,7 @@ const RemovePage = function (props: { match: { params: { id: any } } }) { using the form below.

- {/* +