forked from rDrama/rDrama
1
0
Fork 0

Show images

master
Outrun Colors 2022-09-25 17:47:52 -05:00
parent 0aafbbbccd
commit 8ce8ed4ae7
No known key found for this signature in database
GPG Key ID: 0426976DCEFE6073
2 changed files with 22 additions and 3 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "chat", "name": "chat",
"version": "0.1.2", "version": "0.1.3",
"main": "./src/index.tsx", "main": "./src/index.tsx",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {

View File

@ -1,4 +1,11 @@
import React, { useCallback, useEffect, useMemo, useState } from "react"; import React, {
useCallback,
useEffect,
useLayoutEffect,
useMemo,
useRef,
useState,
} from "react";
import cx from "classnames"; import cx from "classnames";
import key from "weak-key"; import key from "weak-key";
import humanizeDuration from "humanize-duration"; import humanizeDuration from "humanize-duration";
@ -146,6 +153,7 @@ export function ChatMessage({
} }
export function ChatMessageList() { export function ChatMessageList() {
const listRef = useRef<HTMLDivElement>(null);
const { messages } = useChat(); const { messages } = useChat();
const [timestampUpdates, setTimestampUpdates] = useState(0); const [timestampUpdates, setTimestampUpdates] = useState(0);
const groupedMessages = useMemo(() => groupMessages(messages), [messages]); const groupedMessages = useMemo(() => groupMessages(messages), [messages]);
@ -171,8 +179,19 @@ export function ChatMessageList() {
}; };
}, []); }, []);
useLayoutEffect(() => {
const images = Array.from(
listRef.current.getElementsByTagName("img")
).filter((image) => image.dataset.src);
for (const image of images) {
image.src = image.dataset.src;
image.dataset.src = undefined;
}
}, [messages]);
return ( return (
<div className="ChatMessageList"> <div className="ChatMessageList" ref={listRef}>
{groupedMessages.map((group) => ( {groupedMessages.map((group) => (
<div key={key(group)} className="ChatMessageList-group"> <div key={key(group)} className="ChatMessageList-group">
{group.map((message, index) => ( {group.map((message, index) => (