This commit is contained in:
Rao 2025-04-08 13:06:40 +08:00
parent 9b259f2597
commit 5ab23e4a42
3 changed files with 45 additions and 27 deletions

View File

@ -1,6 +0,0 @@
{
"marscode.chatLanguage": "cn",
"marscode.codeCompletionPro": {
"enableCodeCompletionPro": true
}
}

View File

@ -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<ShareCodeGeneratorProps> = ({
fileId,
onSuccess,
@ -71,19 +85,7 @@ export const ShareCodeGenerator: React.FC<ShareCodeGeneratorProps> = ({
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('复制成功'))

View File

@ -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<ShareCodeValidatorProps> = ({
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<ShareCodeValidatorProps> = ({
message.warning('请输入正确的分享码');
return;
}
setLoading(true);
try {
const { data: latestResult } = await refetch();
console.log('验证分享码返回数据:', latestResult);
@ -35,11 +35,25 @@ export const ShareCodeValidator: React.FC<ShareCodeValidatorProps> = ({
} 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 (
<>
<div className={styles.container}>
@ -51,17 +65,25 @@ export const ShareCodeValidator: React.FC<ShareCodeValidatorProps> = ({
maxLength={8}
onPressEnter={validateCode}
/>
<Button
type="primary"
onClick={getDownloadUrl}
loading={isLoading}
disabled={!code.trim()}
>
</Button>
<Button
type="primary"
onClick={validateCode}
loading={loading}
loading={isLoading}
disabled={!code.trim()}
>
</Button>
</div>
{
!loading && result && (
!isLoading && result && (
<div className='w-full flex justify-between my-2 p-1 antialiased text-secondary-600'>
<span >{`分享码:${result?.code ? result.code : ''}`}</span>
<span >{`文件名:${result?.fileName ? result.fileName : ''}`}</span>