import { q } from "./basic.js"; import { store } from "./store/store.js"; import * as lsm from "./lsm.js"; import { chat } from "./chat.js"; let sentIndex = 0; const input = q("#c-chat-textarea"); store.activeRoom.subscribe("changeSelf", () => { if (store.activeRoom.exists()) { input.focus(); } }); input.addEventListener("keydown", (event) => { if (event.key === "Enter" && !event.shiftKey && !event.ctrlKey) { event.preventDefault(); const body = input.value; send(input.value); input.value = ""; fixHeight(); } }); input.addEventListener("input", () => { fixHeight(); }); function fixHeight() { input.style.height = "0px"; // console.log(input.clientHeight, input.scrollHeight) input.style.height = input.scrollHeight + 1 + "px"; } function getTxnId() { return Date.now() + sentIndex++; } function send(body) { if (!store.activeRoom.exists()) return; const id = store.activeRoom.value().id; return fetch( `${lsm.get( "domain" )}/_matrix/client/r0/rooms/${id}/send/m.room.message/${getTxnId()}?access_token=${lsm.get( "access_token" )}`, { method: "PUT", body: JSON.stringify({ msgtype: "m.text", body, }), headers: { "Content-Type": "application/json", }, } ); }