import React, { useCallback, useEffect, useState } from 'react'; import { Input, Button, message } from 'antd'; import styles from './ShareCodeValidator.module.css'; import { api } from '@nice/client'; import dayjs from 'dayjs'; interface ShareCodeValidatorProps { onValidSuccess: (fileId: string, fileName: string) => void; } import utc from 'dayjs/plugin/utc'; import timezone from 'dayjs/plugin/timezone'; dayjs.extend(utc); dayjs.extend(timezone); export const ShareCodeValidator: React.FC = ({ onValidSuccess, }) => { const [code, setCode] = useState(''); const [loading, setLoading] = useState(false); const { data: result, isLoading,refetch } = api.shareCode.getFileByShareCode.useQuery( { code: code.trim() }, { enabled: false } ) const validateCode = useCallback(async () => { if (!code.trim()) { message.warning('请输入正确的分享码'); return; } setLoading(true); try { const { data: latestResult } = await refetch(); console.log('验证分享码返回数据:', latestResult); onValidSuccess(latestResult.url, latestResult.fileName); } catch (error) { console.error('验证分享码失败:', error); message.error('分享码无效或已过期'); } finally { setLoading(false); } }, [refetch, code, onValidSuccess]); return ( <>
setCode(e.target.value.toUpperCase())} placeholder="请输入分享码" maxLength={8} onPressEnter={validateCode} />
{ !loading && result && (
{`分享码:${result?.code ? result.code : ''}`} {`文件名:${result?.fileName ? result.fileName : ''}`} {`过期时间:${result?.expiresAt ? dayjs(result.expiresAt).format('YYYY-MM-DD HH:mm:ss') : ''}`} {`剩余使用次数:${result?.canUseTimes ? result.canUseTimes : ''}`}
) } ); };