diff --git a/ts/components/CallScreen.tsx b/ts/components/CallScreen.tsx index bb70cb7c11..b9beef6b0d 100644 --- a/ts/components/CallScreen.tsx +++ b/ts/components/CallScreen.tsx @@ -7,12 +7,12 @@ import { noop } from 'lodash'; import classNames from 'classnames'; import type { VideoFrameSource } from 'ringrtc'; import type { + ActiveCallStateType, SetLocalAudioType, SetLocalPreviewType, SetLocalVideoType, SetRendererCanvasType, } from '../state/ducks/calling'; -import { isInSpeakerView } from '../state/selectors/calling'; import { Avatar } from './Avatar'; import { CallingHeader } from './CallingHeader'; import { CallingPreCallInfo, RingMode } from './CallingPreCallInfo'; @@ -25,6 +25,7 @@ import type { } from '../types/Calling'; import { CallMode, + CallViewMode, CallState, GroupCallConnectionState, GroupCallJoinState, @@ -77,6 +78,15 @@ type DirectCallHeaderMessagePropsType = { joinedAt?: number; }; +export const isInSpeakerView = ( + call: Pick | undefined +): boolean => { + return Boolean( + call?.viewMode === CallViewMode.Presentation || + call?.viewMode === CallViewMode.Speaker + ); +}; + function DirectCallHeaderMessage({ callState, i18n, diff --git a/ts/state/selectors/message.ts b/ts/state/selectors/message.ts index 2474a66ea1..58b98eb89a 100644 --- a/ts/state/selectors/message.ts +++ b/ts/state/selectors/message.ts @@ -1371,8 +1371,8 @@ export function getMessagePropStatus( >, ourConversationId: string | undefined ): LastMessageStatus | undefined { - if (!isOutgoing(message)) { - return undefined; + if (isIncoming(message)) { + return hasErrors(message) ? 'error' : undefined; } if (getLastChallengeError(message)) { diff --git a/ts/test-electron/state/selectors/messages_test.ts b/ts/test-electron/state/selectors/messages_test.ts index ba22d3a5f8..f88407598f 100644 --- a/ts/test-electron/state/selectors/messages_test.ts +++ b/ts/test-electron/state/selectors/messages_test.ts @@ -351,12 +351,24 @@ describe('state/selectors/messages', () => { ...overrides, }); - it('returns undefined for incoming messages', () => { + it('returns undefined for incoming messages with no errors', () => { const message = createMessage({ type: 'incoming' }); assert.isUndefined(getMessagePropStatus(message, ourConversationId)); }); + it('returns "error" for incoming messages with errors', () => { + const message = createMessage({ + type: 'incoming', + errors: [new Error('something went wrong')], + }); + + assert.strictEqual( + getMessagePropStatus(message, ourConversationId), + 'error' + ); + }); + it('returns "paused" for messages with challenges', () => { const challengeError: ShallowChallengeError = Object.assign( new Error('a challenge'),