refactor: 对对话文件的真实地址获取重构
* 顺带引入了 tws://file?hash= 协议, 以后会填坑
This commit is contained in:
@@ -27,7 +27,8 @@ import Preference from '../preference/Preference.tsx'
|
|||||||
import GroupSettings from "../../api/client_data/GroupSettings.ts"
|
import GroupSettings from "../../api/client_data/GroupSettings.ts"
|
||||||
import PreferenceUpdater from "../preference/PreferenceUpdater.ts"
|
import PreferenceUpdater from "../preference/PreferenceUpdater.ts"
|
||||||
import SystemMessage from "./SystemMessage.tsx"
|
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<HTMLElement> {
|
interface Args extends React.HTMLAttributes<HTMLElement> {
|
||||||
target: string
|
target: string
|
||||||
@@ -49,11 +50,12 @@ const markedInstance = new marked.Marked({
|
|||||||
},
|
},
|
||||||
image({ text, href }) {
|
image({ text, href }) {
|
||||||
const type = /^(Video|File)=.*/.exec(text)?.[1] || 'Image'
|
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 ({
|
return ({
|
||||||
Image: `<chat-image src="${href}" alt="${text}"></chat-image>`,
|
Image: `<chat-image src="${url}" alt="${text}"></chat-image>`,
|
||||||
Video: `<chat-video src="${href}"></chat-video>`,
|
Video: `<chat-video src="${url}"></chat-video>`,
|
||||||
File: `<chat-file href="${href}" name="${/^Video|File=(.*)/.exec(text)?.[1] || 'Unnamed file'}"></chat-file>`,
|
File: `<chat-file href="${url}" name="${/^Video|File=(.*)/.exec(text)?.[1] || 'Unnamed file'}"></chat-file>`,
|
||||||
})?.[type] || ``
|
})?.[type] || ``
|
||||||
}
|
}
|
||||||
return ``
|
return ``
|
||||||
@@ -171,7 +173,7 @@ export default function ChatFragment({ target, showReturnButton, onReturnButtonC
|
|||||||
data: cachedFiles.current[fileName],
|
data: cachedFiles.current[fileName],
|
||||||
}, 5000)
|
}, 5000)
|
||||||
if (checkApiSuccessOrSncakbar(re, `文件[${fileName}] 上传失败`)) return setIsMessageSending(false)
|
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 + ')')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ export default class ChatApi extends BaseApi {
|
|||||||
code: 200,
|
code: 200,
|
||||||
msg: "成功",
|
msg: "成功",
|
||||||
data: {
|
data: {
|
||||||
file_path: 'uploaded_files/' + file.getHash()
|
file_hash: file.getHash()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user