import { useOrg } from '@components/Contexts/OrgContext' import PageLoading from '@components/Objects/Loaders/PageLoading' import ConfirmationModal from '@components/StyledElements/ConfirmationModal/ConfirmationModal' import { getAPIUrl, getUriWithOrg } from '@services/config/config' import { swrFetcher } from '@services/utils/ts/requests' import { Globe, Ticket, UserSquare, Users, X } from 'lucide-react' import Link from 'next/link' import React, { useEffect } from 'react' import useSWR, { mutate } from 'swr' import dayjs from 'dayjs' import { changeSignupMechanism, deleteInviteCode, } from '@services/organizations/invites' import toast from 'react-hot-toast' import { useRouter } from 'next/navigation' import Modal from '@components/StyledElements/Modal/Modal' import OrgInviteCodeGenerate from '@components/Objects/Modals/Dash/OrgAccess/OrgInviteCodeGenerate' import { useLHSession } from '@components/Contexts/LHSessionContext' function OrgAccess() { const org = useOrg() as any const session = useLHSession() as any const access_token = session.data.tokens.access_token; const { data: invites } = useSWR( org ? `${getAPIUrl()}orgs/${org?.id}/invites` : null, (url) => swrFetcher(url, access_token) ) const [isLoading, setIsLoading] = React.useState(false) const [joinMethod, setJoinMethod] = React.useState('closed') const [invitesModal, setInvitesModal] = React.useState(false) const router = useRouter() async function getOrgJoinMethod() { if (org) { if (org.config.config.GeneralConfig.users.signup_mechanism == 'open') { setJoinMethod('open') } else { setJoinMethod('inviteOnly') } } } async function deleteInvite(invite: any) { let res = await deleteInviteCode(org.id, invite.invite_code_uuid, access_token) if (res.status == 200) { mutate(`${getAPIUrl()}orgs/${org.id}/invites`) } else { toast.error('Error ' + res.status + ': ' + res.data.detail) } } async function changeJoinMethod(method: 'open' | 'inviteOnly') { let res = await changeSignupMechanism(org.id, method, access_token) if (res.status == 200) { router.refresh() mutate(`${getAPIUrl()}orgs/slug/${org?.slug}`) } else { toast.error('Error ' + res.status + ': ' + res.data.detail) } } useEffect(() => { if (invites && org) { getOrgJoinMethod() setIsLoading(false) } }, [org, invites]) return ( <> {!isLoading ? ( <>
| Code | Signup link | Type | Expiration date | Actions |
|---|---|---|---|---|
| {invite.invite_code} | {getUriWithOrg( org?.slug, `/signup?inviteCode=${invite.invite_code}` )} |
{invite.usergroup_id ? (
|
{dayjs(invite.expiration_date) .add(1, 'year') .format('DD/MM/YYYY')}{' '} |
|