rht
This commit is contained in:
parent
9b259f2597
commit
5ab23e4a42
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"marscode.chatLanguage": "cn",
|
||||
"marscode.codeCompletionPro": {
|
||||
"enableCodeCompletionPro": true
|
||||
}
|
||||
}
|
|
@ -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('复制成功'))
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue