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;
|
expiresAt?: Date;
|
||||||
canUseTimes?: number;
|
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> = ({
|
export const ShareCodeGenerator: React.FC<ShareCodeGeneratorProps> = ({
|
||||||
fileId,
|
fileId,
|
||||||
onSuccess,
|
onSuccess,
|
||||||
|
@ -71,19 +85,7 @@ export const ShareCodeGenerator: React.FC<ShareCodeGeneratorProps> = ({
|
||||||
setLoading(false);
|
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) => {
|
const handleCopy = (code) => {
|
||||||
copyToClipboard(code)
|
copyToClipboard(code)
|
||||||
.then(() => console.log('复制成功'))
|
.then(() => console.log('复制成功'))
|
||||||
|
|
|
@ -8,14 +8,15 @@ interface ShareCodeValidatorProps {
|
||||||
}
|
}
|
||||||
import utc from 'dayjs/plugin/utc';
|
import utc from 'dayjs/plugin/utc';
|
||||||
import timezone from 'dayjs/plugin/timezone';
|
import timezone from 'dayjs/plugin/timezone';
|
||||||
|
import { env } from '@web/src/env';
|
||||||
|
import { copyToClipboard } from './sharecodegenerator';
|
||||||
dayjs.extend(utc);
|
dayjs.extend(utc);
|
||||||
dayjs.extend(timezone);
|
dayjs.extend(timezone);
|
||||||
export const ShareCodeValidator: React.FC<ShareCodeValidatorProps> = ({
|
export const ShareCodeValidator: React.FC<ShareCodeValidatorProps> = ({
|
||||||
onValidSuccess,
|
onValidSuccess,
|
||||||
}) => {
|
}) => {
|
||||||
const [code, setCode] = useState('');
|
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() },
|
{ code: code.trim() },
|
||||||
{
|
{
|
||||||
enabled: false
|
enabled: false
|
||||||
|
@ -27,7 +28,6 @@ export const ShareCodeValidator: React.FC<ShareCodeValidatorProps> = ({
|
||||||
message.warning('请输入正确的分享码');
|
message.warning('请输入正确的分享码');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setLoading(true);
|
|
||||||
try {
|
try {
|
||||||
const { data: latestResult } = await refetch();
|
const { data: latestResult } = await refetch();
|
||||||
console.log('验证分享码返回数据:', latestResult);
|
console.log('验证分享码返回数据:', latestResult);
|
||||||
|
@ -35,11 +35,25 @@ export const ShareCodeValidator: React.FC<ShareCodeValidatorProps> = ({
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('验证分享码失败:', error);
|
console.error('验证分享码失败:', error);
|
||||||
message.error('分享码无效或已过期');
|
message.error('分享码无效或已过期');
|
||||||
} finally {
|
|
||||||
setLoading(false);
|
|
||||||
}
|
}
|
||||||
}, [refetch, code, onValidSuccess]);
|
}, [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 (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className={styles.container}>
|
<div className={styles.container}>
|
||||||
|
@ -51,17 +65,25 @@ export const ShareCodeValidator: React.FC<ShareCodeValidatorProps> = ({
|
||||||
maxLength={8}
|
maxLength={8}
|
||||||
onPressEnter={validateCode}
|
onPressEnter={validateCode}
|
||||||
/>
|
/>
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
onClick={getDownloadUrl}
|
||||||
|
loading={isLoading}
|
||||||
|
disabled={!code.trim()}
|
||||||
|
>
|
||||||
|
获取下载链接
|
||||||
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
type="primary"
|
type="primary"
|
||||||
onClick={validateCode}
|
onClick={validateCode}
|
||||||
loading={loading}
|
loading={isLoading}
|
||||||
disabled={!code.trim()}
|
disabled={!code.trim()}
|
||||||
>
|
>
|
||||||
下载
|
下载
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
{
|
{
|
||||||
!loading && result && (
|
!isLoading && result && (
|
||||||
<div className='w-full flex justify-between my-2 p-1 antialiased text-secondary-600'>
|
<div className='w-full flex justify-between my-2 p-1 antialiased text-secondary-600'>
|
||||||
<span >{`分享码:${result?.code ? result.code : ''}`}</span>
|
<span >{`分享码:${result?.code ? result.code : ''}`}</span>
|
||||||
<span >{`文件名:${result?.fileName ? result.fileName : ''}`}</span>
|
<span >{`文件名:${result?.fileName ? result.fileName : ''}`}</span>
|
||||||
|
|
Loading…
Reference in New Issue