'use client' import { useTranslation } from 'react-i18next' import { useCallback, useState } from 'react' import Link from 'next/link' import { useContext } from 'use-context-selector' import { useRouter, useSearchParams } from 'next/navigation' import useSWR from 'swr' import { RiAccountCircleLine } from '@remixicon/react' import Input from '@/app/components/base/input' import { SimpleSelect } from '@/app/components/base/select' import Button from '@/app/components/base/button' import { timezones } from '@/utils/timezone' import { LanguagesSupported, languages } from '@/i18n/language' import I18n from '@/context/i18n' import { activateMember, invitationCheck } from '@/service/common' import Loading from '@/app/components/base/loading' import Toast from '@/app/components/base/toast' export default function InviteSettingsPage() { const { t } = useTranslation() const router = useRouter() const searchParams = useSearchParams() const token = decodeURIComponent(searchParams.get('invite_token') as string) const { locale, setLocaleOnClient } = useContext(I18n) const [name, setName] = useState('') const [language, setLanguage] = useState(LanguagesSupported[0]) const [timezone, setTimezone] = useState(Intl.DateTimeFormat().resolvedOptions().timeZone || 'America/Los_Angeles') const checkParams = { url: '/activate/check', params: { token, }, } const { data: checkRes, mutate: recheck } = useSWR(checkParams, invitationCheck, { revalidateOnFocus: false, }) const handleActivate = useCallback(async () => { try { if (!name) { Toast.notify({ type: 'error', message: t('login.enterYourName') }) return } const res = await activateMember({ url: '/activate', body: { token, name, interface_language: language, timezone, }, }) if (res.result === 'success') { localStorage.setItem('console_token', res.data.access_token) localStorage.setItem('refresh_token', res.data.refresh_token) setLocaleOnClient(language, false) router.replace('/apps') } } catch { recheck() } }, [language, name, recheck, setLocaleOnClient, timezone, token, router, t]) if (!checkRes) return if (!checkRes.is_valid) { return
🤷‍♂️

{t('login.invalid')}

} return

{t('login.setYourAccount')}

setName(e.target.value)} placeholder={t('login.namePlaceholder') || ''} />
item.supported)} onSelect={(item) => { setLanguage(item.value as string) }} />
{/* timezone */}
{ setTimezone(item.value as string) }} />
{/*
{t('login.license.tip')}   {t('login.license.link')}
*/}
}