diff --git a/client/ui/chat/ChatFragment.tsx b/client/ui/chat/ChatFragment.tsx index 3c5c406..58b6e10 100644 --- a/client/ui/chat/ChatFragment.tsx +++ b/client/ui/chat/ChatFragment.tsx @@ -27,7 +27,8 @@ import Preference from '../preference/Preference.tsx' import GroupSettings from "../../api/client_data/GroupSettings.ts" import PreferenceUpdater from "../preference/PreferenceUpdater.ts" import SystemMessage from "./SystemMessage.tsx" -import JoinRequestsList from "./JoinRequestsList.tsx"; +import JoinRequestsList from "./JoinRequestsList.tsx" +import getUrlForFileByHash from "../../getUrlForFileByHash.ts" interface Args extends React.HTMLAttributes { target: string @@ -49,11 +50,12 @@ const markedInstance = new marked.Marked({ }, image({ text, href }) { const type = /^(Video|File)=.*/.exec(text)?.[1] || 'Image' - if (/uploaded_files\/[A-Za-z0-9]+$/.test(href)) { + if (/tws:\/\/file\?hash=[A-Za-z0-9]+$/.test(href)) { + const url = getUrlForFileByHash(/^tws:\/\/file\?hash=(.*)/.exec(href)?.[1]) return ({ - Image: ``, - Video: ``, - File: ``, + Image: ``, + Video: ``, + File: ``, })?.[type] || `` } return `` @@ -171,7 +173,7 @@ export default function ChatFragment({ target, showReturnButton, onReturnButtonC data: cachedFiles.current[fileName], }, 5000) if (checkApiSuccessOrSncakbar(re, `文件[${fileName}] 上传失败`)) return setIsMessageSending(false) - text = text.replaceAll('(' + fileName + ')', '(' + re.data!.file_path as string + ')') + text = text.replaceAll('(' + fileName + ')', '(tws://file?hash=' + re.data!.file_hash as string + ')') } } diff --git a/server/api/ChatApi.ts b/server/api/ChatApi.ts index da85d5b..c90dcb6 100644 --- a/server/api/ChatApi.ts +++ b/server/api/ChatApi.ts @@ -152,7 +152,7 @@ export default class ChatApi extends BaseApi { code: 200, msg: "成功", data: { - file_path: 'uploaded_files/' + file.getHash() + file_hash: file.getHash() }, } })