diff --git a/web/src/features/messages/ConversationView.tsx b/web/src/features/messages/ConversationView.tsx index d3534dc9..4b7dd8b7 100644 --- a/web/src/features/messages/ConversationView.tsx +++ b/web/src/features/messages/ConversationView.tsx @@ -47,6 +47,7 @@ export function ConversationView() { const [selectedSeqs, setSelectedSeqs] = useState>(new Set()); const [loadingOlder, setLoadingOlder] = useState(false); const [recording, setRecording] = useState(false); + const [bulkForwardOpen, setBulkForwardOpen] = useState(false); const [replyTo, setReplyTo] = useState(null); const [forwardMsg, setForwardMsg] = useState(null); const [emojiOpen, setEmojiOpen] = useState(false); @@ -161,6 +162,22 @@ export function ConversationView() { exitSelectMode(); }; + const bulkFavorite = () => { + if (selectedSeqs.size === 0) return; + favoriteMessages([...selectedSeqs].map((seq) => ({ topic: topicId, seq }))).catch(() => {}); + exitSelectMode(); + }; + + const bulkForward = (targetTopic: string) => { + const target = tinode.getTopic(targetTopic); + for (const seq of selectedSeqs) { + const msg = topic.findMessage(seq); + if (msg) forwardMessage(topicId, msg, target); + } + setBulkForwardOpen(false); + exitSelectMode(); + }; + const handleAction = (action: MessageAction) => { const msg = menu?.msg; setMenu(null); @@ -275,6 +292,24 @@ export function ConversationView() { {selectMode ? (
+ +
); }