Updated height calculation

This commit is contained in:
Alois 2026-03-29 13:26:19 +02:00
commit 0cd703da54
3 changed files with 7 additions and 28 deletions

View file

@ -10,11 +10,6 @@ import { useSocket } from "@tensamin/ttp/context";
import { useCrypto } from "@tensamin/crypto/context";
import { log, toast } from "@tensamin/shared/log";
/**
* Executes InputComponent.
* @param none This function has no parameters.
* @returns unknown.
*/
export default function InputComponent() {
const [value, setValue] = React.useState("");
const [invertEnterBehavior, setInvertEnterBehavior] = React.useState(false);
@ -49,12 +44,14 @@ export default function InputComponent() {
}
if (!currentSharedSecret) {
toast("error", "Conversation key not ready yet");
toast("error", "Still getting shared secret...");
return;
}
const height = currentValue.split("\n").length * 24 + 16; // 24px per line + 16px padding
const reference = addLiveMessage({
height: 0,
height,
not_encrypted: true,
timestamp: time,
content: currentValue,
@ -64,7 +61,7 @@ export default function InputComponent() {
const encryptedContext = await encrypt(currentSharedSecret, currentValue);
send("message_send", {
height: 0,
height,
content: encryptedContext,
receiver_id: currentUserId,
send_time: time,

View file

@ -62,26 +62,7 @@ export default function Screen() {
const virtualizer = useVirtualizer({
count: messages.length,
getScrollElement: () => scrollRef.current,
estimateSize: (index) => {
const message = messages[index];
if (!message) {
return 56;
}
let decodedContent = message.content;
try {
decodedContent = atob(message.content);
} catch {
/* noop */
}
const lineCount = decodedContent.split("\n").length;
const wrappedLineCount = Math.ceil(decodedContent.length / 42);
const fileCount = message.files?.length ?? 0;
return 28 + Math.max(lineCount, wrappedLineCount) * 20 + fileCount * 20;
},
estimateSize: (index) => messages[index].height,
overscan: 6,
});