import { Button } from '@/components/ui/button' import React, { useState } from 'react' import { JoinCommandStr } from '@/lib/consts' import { useStore } from '@nanostores/react' import { $platformInfo } from '@/store/user' import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover' import { useTranslation } from 'react-i18next' import { signToken } from '@/api/user' import { useQuery } from '@tanstack/react-query' import { toast } from 'sonner' import { RespCode } from '@/lib/pb/common' export const ClientJoinButton = () => { const platformInfo = useStore($platformInfo) const [joinToken, setJoinToken] = useState(undefined) const { t } = useTranslation() if (!platformInfo) { return ( ) } const handleNewToken = async () => { try { const resp = await signToken({ expiresIn: BigInt(1000000000), permissions: [ { method: 'POST', path: '/api/v1/client/get', }, { method: 'POST', path: '/api/v1/client/init', }, ], }) if (!resp || !resp.status || resp.status.code !== RespCode.SUCCESS) { toast.error('server error') return } setJoinToken(resp.token) } catch (error) { toast.error(JSON.stringify(error)) } } return (

{t('client.join.title')}

{t('client.join.description')} ({t('common.download')})

{joinToken != undefined && <>
                {JoinCommandStr(platformInfo, joinToken)}
              
}
) }