Skip to content

Commit b3ab666

Browse files
authored
fix: image not shown close mf-6014 (#11945)
1 parent d7420e9 commit b3ab666

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

packages/mask/content-script/site-adaptors/twitter.com/customization/render-fragments.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,4 @@ export const TwitterRenderFragments: RenderFragmentsContextType = {
2424
const { hasMatch, ...events } = useTagEnhancer('cash', props.children.slice(1))
2525
return <Link {...events} href={target} children={props.children} fontSize="inherit" />
2626
}),
27-
Image: () => null,
2827
}

packages/mask/content-script/site-adaptors/twitter.com/utils/fetch.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import {
1111
unstable_STYLE_META,
1212
makeTypedMessageTuple,
1313
FlattenTypedMessage,
14+
makeTypedMessagePromise,
15+
type TypedMessageImage,
1416
} from '@masknet/typed-message'
1517
import { collectNodeText, collectTwitterEmoji } from '../../../utils/index.js'
1618

@@ -102,6 +104,32 @@ export function postContentMessageParser(node: HTMLElement): TypedMessage {
102104
} else if (node instanceof HTMLAnchorElement) {
103105
const anchor = node
104106
const href = anchor.getAttribute('title') ?? anchor.getAttribute('href')
107+
if (href?.includes('/photo/')) {
108+
const image = node.querySelector<HTMLImageElement>('img')
109+
if (image)
110+
return makeTypedMessageImage(image.src, { width: node.clientWidth, height: node.clientHeight })
111+
return makeTypedMessagePromise(
112+
new Promise<TypedMessageImage>((resolve) => {
113+
const ob = new MutationObserver(() => {
114+
const image = node.querySelector<HTMLImageElement>('img')
115+
if (image) {
116+
ob.disconnect()
117+
resolve(
118+
makeTypedMessageImage(image.src, {
119+
width: node.clientWidth,
120+
height: node.clientHeight,
121+
}),
122+
)
123+
}
124+
})
125+
ob.observe(node, { childList: true, subtree: true })
126+
setTimeout(() => {
127+
ob.disconnect()
128+
}, 60 * 1000)
129+
}),
130+
makeTypedMessageEmpty(),
131+
)
132+
}
105133
const content = anchor.textContent
106134
if (!content) return makeTypedMessageEmpty()
107135
const altImage = node.querySelector('img')

0 commit comments

Comments
 (0)