Updated height calculation
This commit is contained in:
parent
ed53c17597
commit
0cd703da54
3 changed files with 7 additions and 28 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue