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