remove from pins when msg deleted

pull/1154/head
Abron 2025-02-04 11:04:43 +03:30
parent 900c55e68b
commit 31e2647af5
2 changed files with 22 additions and 6 deletions

View File

@ -282,8 +282,8 @@ export default observer(
const unhide = () => setHidden(false);
const renderer = getRenderer(channel);
useEffect(() => {
// Subscribe to the update event for pinned messages
const unsubscribe = internalSubscribe(
// Subscribe to the update and delete events for pinned messages
const unsubscribeUpdate = internalSubscribe(
"PinnedMessage",
"update",
(newMessage: unknown) => {
@ -294,8 +294,22 @@ export default observer(
}
);
// Cleanup subscription on unmount
return () => unsubscribe();
const unsubscribeDelete = internalSubscribe(
"PinnedMessage",
"delete",
(deletedMessageId: unknown) => {
const message = deletedMessageId as MessageI;
renderer.pinned_messages = renderer.pinned_messages.filter(
(msg) => msg._id !== deletedMessageId
);
}
);
// Cleanup subscriptions on unmount
return () => {
unsubscribeUpdate();
unsubscribeDelete();
};
}, [renderer]);

View File

@ -3,6 +3,7 @@ import { Text } from "preact-i18n";
import { ModalForm } from "@revoltchat/ui";
import Message from "../../../components/common/messaging/Message";
import { internalEmit } from "../../../lib/eventEmitter";
import { ModalProps } from "../types";
/**
@ -29,8 +30,9 @@ export default function DeleteMessage({
element: <Message message={target} head={true} contrast />,
},
}}
callback={() => target.delete()}
submit={{
callback={() => {
target.delete(); internalEmit("PinnedMessage", "delete", target._id);
}} submit={{
palette: "error",
children: <Text id="app.special.modals.actions.delete" />,
}}