import Link from 'next/link' import { useRouter } from 'next/router' import { useCallback, useEffect, useState } from 'react' import { Button } from '../../components/elements/Button' import { HStack, VStack } from '../../components/elements/LayoutPrimitives' import { StyledText, StyledTextSpan, } from '../../components/elements/StyledText' import { PageMetaData } from '../../components/patterns/PageMetaData' import { ProfileLayout } from '../../components/templates/ProfileLayout' import { joinGroupMutation } from '../../lib/networking/mutations/joinGroupMutation' import { useGetViewerQuery } from '../../lib/networking/queries/useGetViewerQuery' import { showSuccessToast } from '../../lib/toastHelpers' export default function InvitePage(): JSX.Element { const router = useRouter() const { viewerData, viewerDataError, isLoading } = useGetViewerQuery() const { inviteCode } = router.query const [errorMessage, setErrorMessage] = useState(undefined) // Check if the user is logged in and display an error message if they are not useEffect(() => { if (!isLoading && router.isReady) { if (viewerDataError || !viewerData?.me) { setErrorMessage( 'You are not logged in. You must log in or signup before accepting your invite.' ) } } }, [isLoading, router, viewerData, viewerDataError]) const acceptClicked = useCallback( (event: any) => { event?.stopPropagation() if (!router.isReady) { return } if (!inviteCode || typeof inviteCode != 'string') { setErrorMessage('No invite code provided') } const joinGroup = async () => { try { const result = await joinGroupMutation(inviteCode as string) if (!result) { throw 'Unknown error occurred.' } showSuccessToast(`You have been added to the ${result.name} group`) router.push(`/home`) } catch (error) { console.log('error', error) setErrorMessage('Unable to join group') } } joinGroup().catch((error) => { setErrorMessage(error) }) }, [router, inviteCode] ) return <> You're invited You have been invited to join a recommendation group on Omnivore. Recommendation groups allow you to share articles with other group members. {errorMessage && ( {errorMessage} )} {viewerData?.me ? ( ) : ( )} Don't have an Omnivore account?{' '} Signup
; }