import { Dispatch, SetStateAction, useCallback } from 'react' import { useTranslation } from 'react-i18next' import { InviteViewTypes } from './group-invite' import getMeta from '@/utils/meta' import { FetchError, putJSON } from '@/infrastructure/fetch-json' import useAsync from '@/shared/hooks/use-async' import classNames from 'classnames' import { debugConsole } from '@/utils/debugging' import Notification from '@/shared/components/notification' export default function JoinGroup({ setView, }: { setView: Dispatch> }) { const { t } = useTranslation() const expired = getMeta('ol-expired') const inviteToken = getMeta('ol-inviteToken') const { runAsync, isLoading: isJoining, isError, } = useAsync() const notNowBtnClasses = classNames( 'btn', 'btn-secondary', isJoining ? 'disabled' : '' ) const joinTeam = useCallback(() => { runAsync(putJSON(`/subscription/invites/${inviteToken}`)) .then(() => { setView('invite-accepted') }) .catch(debugConsole.error) }, [inviteToken, runAsync, setView]) if (!inviteToken) { return null } return ( <> {isError && ( )}

{t('join_team_explanation')}

{!expired && (

{t('not_now')}   

)}
) }