import Head from 'next/head'; import Link from 'next/link'; import prisma from '../lib/prisma'; import {useEffect, useState} from "react"; import {useRouter} from 'next/router'; import {CheckIcon} from '@heroicons/react/outline'; import {CalendarIcon, ClockIcon, LocationMarkerIcon} from '@heroicons/react/solid'; import dayjs from 'dayjs'; import utc from 'dayjs/plugin/utc'; import toArray from 'dayjs/plugin/toArray'; import timezone from 'dayjs/plugin/timezone'; import {createEvent} from 'ics'; import {getEventName} from "../lib/event"; dayjs.extend(utc); dayjs.extend(toArray); dayjs.extend(timezone); export default function Success(props) { const router = useRouter(); const {location, name} = router.query; const [ is24h, setIs24h ] = useState(false); const [ date, setDate ] = useState(dayjs.utc(router.query.date)); useEffect( () => { setDate(date.tz(localStorage.getItem('timeOption.preferredTimeZone') || dayjs.tz.guess())); setIs24h(!!localStorage.getItem('timeOption.is24hClock')); }, []); const eventName = getEventName(name, props.eventType.title, props.eventType.eventName); function eventLink(): string { let optional = {}; if (location) { optional['location'] = location; } const event = createEvent({ start: date.utc().toArray().slice(0, 6).map((v, i) => i === 1 ? v + 1 : v), startInputType: 'utc', title: eventName, description: props.eventType.description, duration: { minutes: props.eventType.length }, ...optional }); if (event.error) { throw event.error; } return encodeURIComponent(event.value); } return(
Booking Confirmed | {eventName} | Calendso
) } export async function getServerSideProps(context) { const user = await prisma.user.findFirst({ where: { username: context.query.user, }, select: { username: true, name: true, bio: true, avatar: true, eventTypes: true } }); const eventType = await prisma.eventType.findUnique({ where: { id: parseInt(context.query.type), }, select: { id: true, title: true, description: true, length: true, eventName: true } }); return { props: { user, eventType }, } }