diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index d955e5f..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "marscode.chatLanguage": "cn", - "marscode.codeCompletionPro": { - "enableCodeCompletionPro": true - } -} \ No newline at end of file diff --git a/apps/web/src/app/admin/sharecode/sharecodegenerator.tsx b/apps/web/src/app/admin/sharecode/sharecodegenerator.tsx index ea28515..8dd6892 100755 --- a/apps/web/src/app/admin/sharecode/sharecodegenerator.tsx +++ b/apps/web/src/app/admin/sharecode/sharecodegenerator.tsx @@ -19,6 +19,20 @@ interface ShareCodeResponse { expiresAt?: Date; canUseTimes?: number; } + +export function copyToClipboard(text) { + if (navigator.clipboard) { + return navigator.clipboard.writeText(text); + } else { + const textarea = document.createElement('textarea'); + textarea.value = text; + document.body.appendChild(textarea); + textarea.select(); + document.execCommand('copy'); + document.body.removeChild(textarea); + return Promise.resolve(); + } +} export const ShareCodeGenerator: React.FC = ({ fileId, onSuccess, @@ -71,19 +85,7 @@ export const ShareCodeGenerator: React.FC = ({ setLoading(false); } }; - function copyToClipboard(text) { - if (navigator.clipboard) { - return navigator.clipboard.writeText(text); - } else { - const textarea = document.createElement('textarea'); - textarea.value = text; - document.body.appendChild(textarea); - textarea.select(); - document.execCommand('copy'); - document.body.removeChild(textarea); - return Promise.resolve(); - } - } + const handleCopy = (code) => { copyToClipboard(code) .then(() => console.log('复制成功')) diff --git a/apps/web/src/app/admin/sharecode/sharecodevalidator.tsx b/apps/web/src/app/admin/sharecode/sharecodevalidator.tsx index 00b50a4..ca160ac 100755 --- a/apps/web/src/app/admin/sharecode/sharecodevalidator.tsx +++ b/apps/web/src/app/admin/sharecode/sharecodevalidator.tsx @@ -8,14 +8,15 @@ interface ShareCodeValidatorProps { } import utc from 'dayjs/plugin/utc'; import timezone from 'dayjs/plugin/timezone'; +import { env } from '@web/src/env'; +import { copyToClipboard } from './sharecodegenerator'; 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( + const { data: result, isLoading, refetch } = api.shareCode.getFileByShareCode.useQuery( { code: code.trim() }, { enabled: false @@ -27,7 +28,6 @@ export const ShareCodeValidator: React.FC = ({ message.warning('请输入正确的分享码'); return; } - setLoading(true); try { const { data: latestResult } = await refetch(); console.log('验证分享码返回数据:', latestResult); @@ -35,11 +35,25 @@ export const ShareCodeValidator: React.FC = ({ } catch (error) { console.error('验证分享码失败:', error); message.error('分享码无效或已过期'); - } finally { - setLoading(false); } }, [refetch, code, onValidSuccess]); - + const getDownloadUrl = useCallback(async () => { + try { + const { data: latestResult } = await refetch(); + console.log('验证分享码返回数据:', latestResult); + const downloadUrl = `http://${env.SERVER_IP}:${env.FILE_PORT}/uploads/${latestResult.url}`; + copyToClipboard(downloadUrl) + .then(() => { + message.success(`${latestResult.fileName}的下载链接已复制`,6) + }) + .catch(() => { + message.error('复制失败') + }); + } catch (error) { + console.error('验证分享码失败:', error); + message.error('分享码无效或已过期'); + } + }, [refetch, code, onValidSuccess]); return ( <>
@@ -51,17 +65,25 @@ export const ShareCodeValidator: React.FC = ({ maxLength={8} onPressEnter={validateCode} /> +
{ - !loading && result && ( + !isLoading && result && (
{`分享码:${result?.code ? result.code : ''}`} {`文件名:${result?.fileName ? result.fileName : ''}`}