fix: message sent status displayed for last outgoing message

pull/3065/head
Audric Ackermann 1 year ago
parent 7a295d1fa3
commit 425e63a4ce

@ -6,7 +6,7 @@ import { useMessageExpirationPropsById } from '../../../../hooks/useParamSelecto
import { useMessageStatus } from '../../../../state/selectors'; import { useMessageStatus } from '../../../../state/selectors';
import { useIsDetailMessageView } from '../../../../contexts/isDetailViewContext'; import { useIsDetailMessageView } from '../../../../contexts/isDetailViewContext';
import { getMostRecentMessageId } from '../../../../state/selectors/conversations'; import { getMostRecentOutgoingMessageId } from '../../../../state/selectors/conversations';
import { useSelectedIsGroupOrCommunity } from '../../../../state/selectors/selectedConversation'; import { useSelectedIsGroupOrCommunity } from '../../../../state/selectors/selectedConversation';
import { SpacerXS } from '../../../basic/Text'; import { SpacerXS } from '../../../basic/Text';
import { SessionIcon, SessionIconType } from '../../../icon'; import { SessionIcon, SessionIconType } from '../../../icon';
@ -122,10 +122,9 @@ function useIsExpiring(messageId: string) {
); );
} }
function useIsMostRecentMessage(messageId: string) { function useIsMostRecentOutgoingMessage(messageId: string) {
const mostRecentMessageId = useSelector(getMostRecentMessageId); const mostRecentOutgoingMessageId = useSelector(getMostRecentOutgoingMessageId);
const isMostRecentMessage = mostRecentMessageId === messageId; return mostRecentOutgoingMessageId === messageId;
return isMostRecentMessage;
} }
function MessageStatusExpireTimer(props: Pick<Props, 'messageId'>) { function MessageStatusExpireTimer(props: Pick<Props, 'messageId'>) {
@ -180,11 +179,11 @@ function IconForExpiringMessageId({
const MessageStatusSent = ({ dataTestId, messageId }: Omit<Props, 'isDetailView'>) => { const MessageStatusSent = ({ dataTestId, messageId }: Omit<Props, 'isDetailView'>) => {
const isExpiring = useIsExpiring(messageId); const isExpiring = useIsExpiring(messageId);
const isMostRecentMessage = useIsMostRecentMessage(messageId); const isMostRecentOutgoingMessage = useIsMostRecentOutgoingMessage(messageId);
const isGroup = useSelectedIsGroupOrCommunity(); const isGroup = useSelectedIsGroupOrCommunity();
// we hide a "sent" message status which is not expiring except for the most recent message // we hide the "sent" message status for a non-expiring message unless if it's the most recent outgoing message
if (!isExpiring && !isMostRecentMessage) { if (!isExpiring && !isMostRecentOutgoingMessage) {
return null; return null;
} }
return ( return (
@ -208,10 +207,10 @@ const MessageStatusRead = ({
const isExpiring = useIsExpiring(messageId); const isExpiring = useIsExpiring(messageId);
const isGroup = useSelectedIsGroupOrCommunity(); const isGroup = useSelectedIsGroupOrCommunity();
const isMostRecentMessage = useIsMostRecentMessage(messageId); const isMostRecentOutgoingMessage = useIsMostRecentOutgoingMessage(messageId);
// we hide an outgoing "read" message status which is not expiring except for the most recent message // we hide an outgoing "read" message status which is not expiring except for the most recent message
if (!isIncoming && !isExpiring && !isMostRecentMessage) { if (!isIncoming && !isExpiring && !isMostRecentOutgoingMessage) {
return null; return null;
} }

@ -1,6 +1,6 @@
/* eslint-disable no-restricted-syntax */ /* eslint-disable no-restricted-syntax */
import { createSelector } from '@reduxjs/toolkit'; import { createSelector } from '@reduxjs/toolkit';
import { filter, isEmpty, isFinite, isNumber, pick, sortBy, toNumber } from 'lodash'; import { filter, first, isEmpty, isFinite, isNumber, pick, sortBy, toNumber } from 'lodash';
import { import {
ConversationLookupType, ConversationLookupType,
@ -593,6 +593,14 @@ export const getMostRecentMessageId = (state: StateType): string | null => {
return state.conversations.mostRecentMessageId; return state.conversations.mostRecentMessageId;
}; };
export const getMostRecentOutgoingMessageId = createSelector(
getSortedMessagesOfSelectedConversation,
(messages: Array<MessageModelPropsWithoutConvoProps>): string | undefined => {
return first(messages.filter(m => m.propsForMessage.direction === 'outgoing'))?.propsForMessage
.id;
}
);
export const getOldestMessageId = createSelector( export const getOldestMessageId = createSelector(
getSortedMessagesOfSelectedConversation, getSortedMessagesOfSelectedConversation,
(messages: Array<MessageModelPropsWithoutConvoProps>): string | undefined => { (messages: Array<MessageModelPropsWithoutConvoProps>): string | undefined => {

Loading…
Cancel
Save