Fehlerbehebung Dateien und Smilies in Nachrichten

This commit is contained in:
2026-05-28 11:56:50 +02:00
parent 970872111b
commit 340e4bcc67
2 changed files with 39 additions and 28 deletions

View File

@@ -185,14 +185,15 @@ export default function Nachrichten({ toast, mobile }) {
setDecrypted({});
};
const send = async () => {
if (!text.trim() || !kp || !activeUser) return;
const send = async (overrideText) => {
const msg = (overrideText ?? text).trim();
if (!msg || !kp || !activeUser) return;
if (!activeUser.public_key) { toast('Empfänger hat noch keinen Schlüssel', 'error'); return; }
if (sharedKey === 'error') { toast('Schlüssel inkompatibel Empfänger muss Schlüssel neu generieren', 'error'); return; }
if (!sharedKey) { toast('Schlüssel wird vorbereitet…', 'error'); return; }
setSending(true);
try {
const { encrypted_content, iv } = await encryptMsg(sharedKey, text.trim());
const { encrypted_content, iv } = await encryptMsg(sharedKey, msg);
await api(`/tools/nachrichten/messages/${activeUser.id}`, { body: { encrypted_content, iv } });
setText('');
await loadMessages(activeUser.id);
@@ -439,18 +440,19 @@ export default function Nachrichten({ toast, mobile }) {
Senden nicht möglich
</div>
) : (
<div style={{ display:'flex', gap:8, alignItems:'flex-end', position:'relative' }} ref={pickerRef}>
{showPicker && (
<EmojiPicker
onSelect={em => { setText(t => t + em); setShowPicker(false); }}
onClose={() => setShowPicker(false)}
/>
)}
<div style={{ display:'flex', gap:8, alignItems:'flex-end', position:'relative' }}>
<div ref={pickerRef} style={{ position:'absolute', bottom:'100%', right:0 }}>
{showPicker && (
<EmojiPicker
onSelect={em => { setText(t => t + em); setShowPicker(false); }}
onClose={() => setShowPicker(false)}
/>
)}
</div>
<textarea
value={text}
onChange={e => {
const val = e.target.value;
// Kürzel nur konvertieren wenn gerade ein Leerzeichen oder Enter getippt wurde
const last = val[val.length - 1];
if (last === ' ' || last === '\n') {
setText(convertEmojis(val));
@@ -458,7 +460,15 @@ export default function Nachrichten({ toast, mobile }) {
setText(val);
}
}}
onKeyDown={e => { if (e.key==='Enter' && !e.shiftKey) { e.preventDefault(); send(); }}}
onFocus={() => setShowPicker(false)}
onKeyDown={e => {
if (e.key === 'Enter' && !e.shiftKey) {
e.preventDefault();
const converted = convertEmojis(text + ' ').trimEnd();
if (converted !== text) setText(converted);
send(converted);
}
}}
placeholder="Nachricht… (Enter senden · Shift+Enter neue Zeile)"
rows={2}
style={{ ...S.inp, resize:'none', flex:1, fontSize:13, padding:'8px 10px',