fix(reply): 修复回复消息中媒体引用的兼容性问题
适配了 Drafty 媒体的 `refurl` 字段,同时兼容旧的 `ref` 和 `val` 字段,确保不同来源的媒体链接都能正确解析用于渲染。
This commit is contained in:
@@ -175,10 +175,17 @@ function draftyEntityMedia(msg: StoredMessage): QuoteMedia | null {
|
|||||||
// Prefer the first matching media entity -- a quoted message carries one primary attachment.
|
// Prefer the first matching media entity -- a quoted message carries one primary attachment.
|
||||||
for (const ent of doc.ent) {
|
for (const ent of doc.ent) {
|
||||||
const data = ent.data || {};
|
const data = ent.data || {};
|
||||||
const asImage = () =>
|
const asImage = () => {
|
||||||
(typeof data.ref === 'string' || typeof data.val === 'string')
|
// This deployment's Drafty media carries its upload URL in `refurl` (both webapp-sent and
|
||||||
? { image: { ref: typeof data.ref === 'string' ? data.ref : undefined, val: typeof data.val === 'string' ? data.val : undefined, mime: typeof data.mime === 'string' ? data.mime : undefined } }
|
// script/iOS-sent messages -- see attachments.ts), with tinode's classic `ref`/inline `val`
|
||||||
|
// as the other accepted carriers. Missing all three -> not locally renderable.
|
||||||
|
const ref =
|
||||||
|
typeof data.refurl === 'string' ? data.refurl : typeof data.ref === 'string' ? data.ref : undefined;
|
||||||
|
const val = typeof data.val === 'string' ? data.val : undefined;
|
||||||
|
return ref || val
|
||||||
|
? { image: { ref, val, mime: typeof data.mime === 'string' ? data.mime : undefined } }
|
||||||
: null;
|
: null;
|
||||||
|
};
|
||||||
switch (ent.tp) {
|
switch (ent.tp) {
|
||||||
case 'IM': {
|
case 'IM': {
|
||||||
const image = asImage();
|
const image = asImage();
|
||||||
|
|||||||
Reference in New Issue
Block a user