@@ -5,6 +5,7 @@ import { useUserRole } from '../../Message/hooks';
55import {
66 ACTIONS_NOT_WORKING_IN_THREAD ,
77 isMessageBounced ,
8+ isMessageDeleted ,
89 isMessageErrorRetryable ,
910 isNetworkSendFailure ,
1011} from '../../Message/utils' ;
@@ -15,14 +16,15 @@ import type { MessageActionSetItem } from '../MessageActions';
1516 * Base filter hook which covers actions of type `delete`, `edit`,
1617 * `flag`, `markUnread`, `mute`, `quote`, `react` and `reply`, whether
1718 * the rendered message is a reply (replies are limited to certain actions) and
18- * whether the message has appropriate type and status.
19+ * whether the message has appropriate type and status (including soft-deleted) .
1920 */
2021export const useBaseMessageActionSetFilter = (
2122 messageActionSet : MessageActionSetItem [ ] ,
2223 disable = false ,
2324) => {
2425 const { initialMessage : isInitialMessage , message } = useMessageContext ( ) ;
2526 const { channelConfig } = useChannelStateContext ( ) ;
27+ const messageIsDeleted = isMessageDeleted ( message ) ;
2628 const {
2729 canBlockUser,
2830 canDelete,
@@ -68,15 +70,17 @@ export const useBaseMessageActionSetFilter = (
6870 return (
6971 ( type === 'resendMessage' && canSendMessage && ( allowRetry || isBounced ) ) ||
7072 ( type === 'edit' && ( ( isBounced && canEdit ) || hasNetworkSendFailure ) ) ||
71- ( type === 'delete' && ( ( isBounced && canDelete ) || hasNetworkSendFailure ) )
73+ ( type === 'delete' &&
74+ ! messageIsDeleted &&
75+ ( ( isBounced && canDelete ) || hasNetworkSendFailure ) )
7276 ) ;
7377 }
7478
7579 if (
7680 type === 'resendMessage' ||
7781 ( type === 'blockUser' && ! canBlockUser ) ||
7882 ( type === 'copyMessageText' && ! message . text ) ||
79- ( type === 'delete' && ! canDelete ) ||
83+ ( type === 'delete' && ( ! canDelete || messageIsDeleted ) ) ||
8084 ( type === 'edit' && ! canEdit ) ||
8185 ( type === 'flag' && ! canFlag ) ||
8286 ( type === 'markUnread' && ! canMarkUnread ) ||
@@ -106,6 +110,7 @@ export const useBaseMessageActionSetFilter = (
106110 channelConfig ,
107111 isBounced ,
108112 isInitialMessage ,
113+ messageIsDeleted ,
109114 isMessageThreadReply ,
110115 message . error ,
111116 message . status ,
0 commit comments