Fehlerbehebung Dateien und Smilies in Nachrichten
This commit is contained in:
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user