Skip to content

Commit

Permalink
Prevent delete attempts on non-deletable messages
Browse files Browse the repository at this point in the history
  • Loading branch information
prathercc committed Oct 19, 2024
1 parent fc41e50 commit f1ecce9
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 11 deletions.
5 changes: 2 additions & 3 deletions src/containers/channel-messages/channel-messages.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import PurgeButton from "../purge-button/purge-button";
import ExportButton from "../export-button/export-button";
import AdvancedFiltering from "../advanced-filtering/advanced-filtering";
import TokenNotFound from "../../components/token-not-found";
import { messageTypeEquals, sortByProperty } from "../../utils";
import { isRemovableMessage, sortByProperty } from "../../utils";
import CopyAdornment from "../../components/copy-adornment";
import PauseButton from "../../components/pause-button";
import CancelButton from "../../components/cancel-button";
Expand All @@ -44,7 +44,6 @@ import AttachmentModal from "../../components/attachment-modal";
import EmbedModal from "../../components/embed-modal";
import MessageTableToolbar from "../message-table-toolbar/message-table-toolbar";
import ReactionModal from "../../components/reaction-modal";
import { MessageType } from "../../enum/message-type";

function ChannelMessages() {
const { state: userState } = useUserSlice();
Expand Down Expand Up @@ -113,7 +112,7 @@ function ChannelMessages() {
filters.length ? filteredMessages : messages
).map((m) => ({
data: m,
selectable: !messageTypeEquals(m.type, MessageType.CALL),
selectable: isRemovableMessage(m),
renderRow: (row) => (
<TableMessage
settings={settings}
Expand Down
5 changes: 2 additions & 3 deletions src/containers/direct-messages/direct-messages.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import ExportButton from "../export-button/export-button";
import PurgeButton from "../purge-button/purge-button";
import AdvancedFiltering from "../advanced-filtering/advanced-filtering";
import TokenNotFound from "../../components/token-not-found";
import { messageTypeEquals, sortByProperty } from "../../utils";
import { isRemovableMessage, sortByProperty } from "../../utils";
import CopyAdornment from "../../components/copy-adornment";
import PauseButton from "../../components/pause-button";
import CancelButton from "../../components/cancel-button";
Expand All @@ -43,7 +43,6 @@ import AttachmentModal from "../../components/attachment-modal";
import EmbedModal from "../../components/embed-modal";
import MessageTableToolbar from "../message-table-toolbar/message-table-toolbar";
import ReactionModal from "../../components/reaction-modal";
import { MessageType } from "../../enum/message-type";

function DirectMessages() {
const { state: userState } = useUserSlice();
Expand Down Expand Up @@ -109,7 +108,7 @@ function DirectMessages() {
filters.length ? filteredMessages : messages
).map((m) => ({
data: m,
selectable: !messageTypeEquals(m.type, MessageType.CALL),
selectable: isRemovableMessage(m),
renderRow: (row) => (
<TableMessage
settings={settings}
Expand Down
8 changes: 5 additions & 3 deletions src/features/message/message-slice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {
getEncodedEmoji,
isDm,
isGuildForum,
isRemovableMessage,
messageTypeEquals,
sortByProperty,
stringToBool,
Expand Down Expand Up @@ -801,9 +802,10 @@ export const deleteMessages =
);
} else {
const shouldDelete =
(deleteConfig.attachments && deleteConfig.messages) ||
(currentRow.content.length === 0 && deleteConfig.attachments) ||
(currentRow.attachments.length === 0 && deleteConfig.messages);
isRemovableMessage(currentRow) &&
((deleteConfig.attachments && deleteConfig.messages) ||
(currentRow.content.length === 0 && deleteConfig.attachments) ||
(currentRow.attachments.length === 0 && deleteConfig.messages));
const shouldEdit = deleteConfig.attachments || deleteConfig.messages;

if (shouldDelete && !getState().app.discrubCancelled) {
Expand Down
4 changes: 2 additions & 2 deletions src/features/purge/purge-slice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { PurgeState } from "./purge-types";
import { AppThunk } from "../../app/store";
import Channel from "../../classes/channel";
import Message from "../../classes/message";
import { isDm } from "../../utils";
import { isDm, isRemovableMessage } from "../../utils";

const initialState: PurgeState = {
isLoading: null,
Expand Down Expand Up @@ -101,7 +101,7 @@ export const purge =
timeout: 1,
})
);
} else {
} else if (isRemovableMessage(currentRow)) {
const success = await dispatch(deleteMessage(currentRow));
if (!success) {
await dispatch(
Expand Down
11 changes: 11 additions & 0 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -465,3 +465,14 @@ export const isNonStandardMessage = (message: Message) => {
export const messageTypeEquals = (type: number, compareType: MessageType) => {
return `${type}` === compareType;
};

export const isRemovableMessage = (message: Message): boolean => {
return ![
MessageType.RECIPIENT_ADD,
MessageType.RECIPIENT_REMOVE,
MessageType.CALL,
MessageType.CHANNEL_NAME_CHANGE,
MessageType.CHANNEL_ICON_CHANGE,
MessageType.THREAD_STARTER_MESSAGE,
].some((t) => messageTypeEquals(message.type, t));
};

0 comments on commit f1ecce9

Please sign in to comment.