From cd208d29ab1ffbe90fcc44bd76321f6ecdb7149e Mon Sep 17 00:00:00 2001 From: Alex van Andel <me@alexvanandel.com> Date: Thu, 3 Feb 2022 23:23:20 +0000 Subject: [PATCH] Re-implemented smartContractAddress guards (#1703) --- components/booking/pages/AvailabilityPage.tsx | 11 +++++++++++ components/booking/pages/BookingPage.tsx | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/components/booking/pages/AvailabilityPage.tsx b/components/booking/pages/AvailabilityPage.tsx index 756fb21f..f985611d 100644 --- a/components/booking/pages/AvailabilityPage.tsx +++ b/components/booking/pages/AvailabilityPage.tsx @@ -1,6 +1,7 @@ // Get router variables import { ChevronDownIcon, ChevronUpIcon, ClockIcon, CreditCardIcon, GlobeIcon } from "@heroicons/react/solid"; import * as Collapsible from "@radix-ui/react-collapsible"; +import { useContracts } from "contexts/contractsContext"; import dayjs, { Dayjs } from "dayjs"; import customParseFormat from "dayjs/plugin/customParseFormat"; import utc from "dayjs/plugin/utc"; @@ -36,6 +37,16 @@ const AvailabilityPage = ({ profile, eventType, workingHours }: Props) => { const { rescheduleUid } = router.query; const { isReady } = useTheme(profile.theme); const { t } = useLocale(); + const { contracts } = useContracts(); + + useEffect(() => { + if (eventType.metadata.smartContractAddress) { + const eventOwner = eventType.users[0]; + if (!contracts[(eventType.metadata.smartContractAddress || null) as number]) + router.replace(`/${eventOwner.username}`); + } + }, [contracts, eventType.metadata.smartContractAddress, router]); + const selectedDate = useMemo(() => { const dateString = asStringOrNull(router.query.date); if (dateString) { diff --git a/components/booking/pages/BookingPage.tsx b/components/booking/pages/BookingPage.tsx index d706f39f..2f9ab9f5 100644 --- a/components/booking/pages/BookingPage.tsx +++ b/components/booking/pages/BookingPage.tsx @@ -60,6 +60,18 @@ const BookingPage = (props: BookingPageProps) => { const router = useRouter(); const { contracts } = useContracts(); const { eventType } = props; + + useEffect(() => { + if (eventType.metadata.smartContractAddress) { + const eventOwner = eventType.users[0]; + + if (!contracts[(eventType.metadata.smartContractAddress || null) as number]) + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + /* @ts-ignore */ + router.replace(`/${eventOwner.username}`); + } + }, [contracts, eventType.metadata.smartContractAddress, router]); + const mutation = useMutation(createBooking, { onSuccess: async ({ attendees, paymentUid, ...responseData }) => { if (paymentUid) {