chore: move deleteMessage & retrySend to other files
parent
1957b3ece3
commit
53a6dae896
@ -0,0 +1,35 @@
|
|||||||
|
import { useCallback } from 'react';
|
||||||
|
import { deleteMessagesForX } from '../../../../interactions/conversations/unsendingInteractions';
|
||||||
|
import {
|
||||||
|
useMessageIsDeletable,
|
||||||
|
useMessageIsDeletableForEveryone,
|
||||||
|
useMessageStatus,
|
||||||
|
} from '../../../../state/selectors';
|
||||||
|
import {
|
||||||
|
useSelectedConversationKey,
|
||||||
|
useSelectedIsPublic,
|
||||||
|
} from '../../../../state/selectors/selectedConversation';
|
||||||
|
import { ItemWithDataTestId } from '../MenuItemWithDataTestId';
|
||||||
|
|
||||||
|
export const DeleteItem = ({ messageId }: { messageId: string }) => {
|
||||||
|
const convoId = useSelectedConversationKey();
|
||||||
|
const isPublic = useSelectedIsPublic();
|
||||||
|
|
||||||
|
const isDeletable = useMessageIsDeletable(messageId);
|
||||||
|
const isDeletableForEveryone = useMessageIsDeletableForEveryone(messageId);
|
||||||
|
const messageStatus = useMessageStatus(messageId);
|
||||||
|
|
||||||
|
const enforceDeleteServerSide = isPublic && messageStatus !== 'error';
|
||||||
|
|
||||||
|
const onDelete = useCallback(() => {
|
||||||
|
if (convoId) {
|
||||||
|
void deleteMessagesForX([messageId], convoId, enforceDeleteServerSide);
|
||||||
|
}
|
||||||
|
}, [convoId, enforceDeleteServerSide, messageId]);
|
||||||
|
|
||||||
|
if (!convoId || (isPublic && !isDeletableForEveryone) || (!isPublic && !isDeletable)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return <ItemWithDataTestId onClick={onDelete}>{window.i18n('delete')}</ItemWithDataTestId>;
|
||||||
|
};
|
@ -0,0 +1,25 @@
|
|||||||
|
import { useCallback } from 'react';
|
||||||
|
import { WithMessageId } from '../../../../session/types/with';
|
||||||
|
import { useMessageDirection, useMessageStatus } from '../../../../state/selectors';
|
||||||
|
import { ItemWithDataTestId } from '../MenuItemWithDataTestId';
|
||||||
|
import { Data } from '../../../../data/data';
|
||||||
|
|
||||||
|
export const RetryItem = ({ messageId }: WithMessageId) => {
|
||||||
|
const direction = useMessageDirection(messageId);
|
||||||
|
|
||||||
|
const status = useMessageStatus(messageId);
|
||||||
|
const isOutgoing = direction === 'outgoing';
|
||||||
|
|
||||||
|
const showRetry = status === 'error' && isOutgoing;
|
||||||
|
const onRetry = useCallback(async () => {
|
||||||
|
const found = await Data.getMessageById(messageId);
|
||||||
|
if (found) {
|
||||||
|
await found.retrySend();
|
||||||
|
}
|
||||||
|
}, [messageId]);
|
||||||
|
|
||||||
|
return showRetry ? (
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
|
<ItemWithDataTestId onClick={onRetry}>{window.i18n('resend')}</ItemWithDataTestId>
|
||||||
|
) : null;
|
||||||
|
};
|
Loading…
Reference in New Issue