'use client' import learnhouseIcon from 'public/learnhouse_bigicon_1.png' import Image from 'next/image' import { getOrgLogoMediaDirectory } from '@services/media/media' import Link from 'next/link' import { getUriWithOrg } from '@services/config/config' import { useLHSession } from '@components/Contexts/LHSessionContext' import React, { useEffect } from 'react' import { MailWarning, Ticket, UserPlus } from 'lucide-react' import { useOrg } from '@components/Contexts/OrgContext' import UserAvatar from '@components/Objects/UserAvatar' import OpenSignUpComponent from './OpenSignup' import InviteOnlySignUpComponent from './InviteOnlySignUp' import { useRouter, useSearchParams } from 'next/navigation' import { validateInviteCode } from '@services/organizations/invites' import PageLoading from '@components/Objects/Loaders/PageLoading' import Toast from '@components/StyledElements/Toast/Toast' import toast from 'react-hot-toast' interface SignUpClientProps { org: any } function SignUpClient(props: SignUpClientProps) { const session = useLHSession() as any const [joinMethod, setJoinMethod] = React.useState('open') const [inviteCode, setInviteCode] = React.useState('') const searchParams = useSearchParams() const inviteCodeParam = searchParams.get('inviteCode') useEffect(() => { if (props.org.config) { setJoinMethod( props.org?.config?.config?.GeneralConfig.users.signup_mechanism ) } if (inviteCodeParam) { setInviteCode(inviteCodeParam) } }, [props.org, inviteCodeParam]) return (
You've been invited to join
{props.org?.logo_image ? ( Learnhouse ) : ( )}
{props.org?.name}
{joinMethod == 'open' && (session.status == 'authenticated' ? ( ) : ( ))} {joinMethod == 'inviteOnly' && (inviteCode ? ( session.status == 'authenticated' ? ( ) : ( ) ) : ( ))}
) } const LoggedInJoinScreen = (props: any) => { const session = useLHSession() as any const org = useOrg() as any const [isLoading, setIsLoading] = React.useState(true) useEffect(() => { if (session && org) { setIsLoading(false) } }, [org, session]) return (

Hi {session.data.username}, join {org?.name} ?

) } const NoTokenScreen = (props: any) => { const session = useLHSession() as any const org = useOrg() as any const router = useRouter() const [isLoading, setIsLoading] = React.useState(true) const [inviteCode, setInviteCode] = React.useState('') const [messsage, setMessage] = React.useState('bruh') const handleInviteCodeChange = (e: any) => { setInviteCode(e.target.value) } const validateCode = async () => { setIsLoading(true) let res = await validateInviteCode(org?.id, inviteCode,session?.user?.tokens.access_token) //wait for 1s if (res.success) { toast.success( "Invite code is valid, you'll be redirected to the signup page in a few seconds" ) setTimeout(() => { router.push(`/signup?inviteCode=${inviteCode}`) }, 2000) } else { toast.error('Invite code is invalid') setIsLoading(false) } } useEffect(() => { if (session && org) { setIsLoading(false) } }, [org, session]) return (
{isLoading ? (
) : (

An invite code is required to join {org?.name}

)}
) } export default SignUpClient