feat(web): send on Enter and newline on Shift+Enter
Some checks failed
CI / test (push) Failing after 25s

This commit is contained in:
2026-03-08 09:59:29 +03:00
parent f01bbda14e
commit 52c41b6958

View File

@@ -1,4 +1,4 @@
import { useEffect, useRef, useState } from "react";
import { useEffect, useRef, useState, type KeyboardEvent } from "react";
import { attachFile, requestUploadUrl, sendMessageWithClientId, uploadToPresignedUrl } from "../api/chats";
import { useAuthStore } from "../store/authStore";
import { useChatStore } from "../store/chatStore";
@@ -104,6 +104,13 @@ export function MessageComposer() {
}
}
function onComposerKeyDown(event: KeyboardEvent<HTMLTextAreaElement>) {
if (event.key === "Enter" && !event.shiftKey) {
event.preventDefault();
void handleSend();
}
}
async function handleUpload(file: File, messageType: "file" | "image" | "video" | "audio" | "voice" = "file") {
if (!activeChatId || !me) {
return;
@@ -314,10 +321,12 @@ export function MessageComposer() {
}}
/>
</label>
<input
className="flex-1 rounded-full border border-slate-700/80 bg-slate-800/80 px-4 py-2.5 text-sm outline-none placeholder:text-slate-400 focus:border-sky-500"
<textarea
className="flex-1 resize-none rounded-2xl border border-slate-700/80 bg-slate-800/80 px-4 py-2.5 text-sm outline-none placeholder:text-slate-400 focus:border-sky-500"
placeholder="Write a message..."
rows={1}
value={text}
onKeyDown={onComposerKeyDown}
onChange={(e) => {
const next = e.target.value;
setText(next);