'use client'; import { getAuthMethodConfig, getSmsPlatform, testSmsSend, updateAuthMethodConfig, } from '@/services/admin/authMethod'; import { useQuery } from '@tanstack/react-query'; import { Button } from '@workspace/ui/components/button'; import { Label } from '@workspace/ui/components/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@workspace/ui/components/select'; import { Switch } from '@workspace/ui/components/switch'; import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@workspace/ui/components/tabs'; import { Textarea } from '@workspace/ui/components/textarea'; import { AreaCodeSelect } from '@workspace/ui/custom-components/area-code-select'; import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import TagInput from '@workspace/ui/custom-components/tag-input'; import { useTranslations } from 'next-intl'; import Link from 'next/link'; import { useState } from 'react'; import { toast } from 'sonner'; import { LogsTable } from '../log'; export default function Page() { const t = useTranslations('phone'); const { data, refetch, isFetching } = useQuery({ queryKey: ['getAuthMethodConfig', 'mobile'], queryFn: async () => { const { data } = await getAuthMethodConfig({ method: 'mobile', }); return data.data; }, }); const { data: platforms } = useQuery({ queryKey: ['getSmsPlatform'], queryFn: async () => { const { data } = await getSmsPlatform(); return data.data?.list; }, }); const selectedPlatform = platforms?.find( (platform) => platform.platform === data?.config?.platform, ); const { platform_url, platform_field_description: platformConfig } = selectedPlatform ?? {}; async function updateConfig(key: string, value: unknown) { if (data?.[key] === value) return; try { await updateAuthMethodConfig({ ...data, [key]: value, } as API.UpdateAuthMethodConfigRequest); toast.success(t('updateSuccess')); refetch(); } catch (error) { /* empty */ } } const [params, setParams] = useState({ telephone: '', area_code: '1', }); return ( {t('settings')} {t('logs')}

{t('enableTip')}

updateConfig('enabled', checked)} disabled={isFetching} />

{t('whitelistValidationTip')}

updateConfig('config', { ...data?.config, enable_whitelist: checked }) } />

{t('whitelistAreaCodeTip')}

updateConfig('config', { ...data?.config, whitelist: value }) } />

{t('platformTip')}

{platform_url && ( )}

{t('platformConfigTip', { key: platformConfig?.access })}

updateConfig('config', { ...data?.config, platform_config: { ...data?.config?.platform_config, access: value, }, }) } disabled={isFetching} placeholder={t('platformConfigTip', { key: platformConfig?.access })} />
{platformConfig?.endpoint && (

{t('platformConfigTip', { key: platformConfig?.endpoint })}

updateConfig('config', { ...data?.config, platform_config: { ...data?.config?.platform_config, endpoint: value, }, }) } disabled={isFetching} placeholder={t('platformConfigTip', { key: platformConfig?.endpoint })} />
)}

{t('platformConfigTip', { key: platformConfig?.secret })}

updateConfig('config', { ...data?.config, platform_config: { ...data?.config?.platform_config, secret: value, }, }) } disabled={isFetching} type='password' placeholder={t('platformConfigTip', { key: platformConfig?.secret })} />
{platformConfig?.template_code && (

{t('platformConfigTip', { key: platformConfig?.template_code })}

updateConfig('config', { ...data?.config, platform_config: { ...data?.config?.platform_config, template_code: value, }, }) } disabled={isFetching} placeholder={t('platformConfigTip', { key: platformConfig?.template_code })} />
)} {platformConfig?.sign_name && (

{t('platformConfigTip', { key: platformConfig?.sign_name })}

updateConfig('config', { ...data?.config, platform_config: { ...data?.config?.platform_config, sign_name: value, }, }) } disabled={isFetching} placeholder={t('platformConfigTip', { key: platformConfig?.sign_name, })} />
)} {platformConfig?.phone_number && (

{t('platformConfigTip', { key: platformConfig?.phone_number })}

updateConfig('config', { ...data?.config, platform_config: { ...data?.config?.platform_config, phone_number: value, }, }) } disabled={isFetching} placeholder={t('platformConfigTip', { key: platformConfig?.phone_number, })} />
)} {platformConfig?.code_variable && (

{t('templateTip', { code: platformConfig?.code_variable })}