You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/ts/components/conversation/TimerNotification.tsx

75 lines
2.5 KiB
TypeScript

import React from 'react';
import { PropsForExpirationTimer } from '../../state/ducks/conversations';
import { assertUnreachable } from '../../types/sqlSharedTypes';
import { ExpirableReadableMessage } from './message/message-item/ExpirableReadableMessage';
import { SessionIcon } from '../icon';
import { SpacerSM, Text } from '../basic/Text';
import { Flex } from '../basic/Flex';
import { isLegacyDisappearingModeEnabled } from '../../util/expiringMessages';
export const TimerNotification = (props: PropsForExpirationTimer) => {
const { messageId, pubkey, profileName, expirationType, timespan, type, disabled } = props;
const contact = profileName || pubkey;
// TODO legacy messages support will be removed in a future release
const mode = isLegacyDisappearingModeEnabled(expirationType)
? null
: expirationType === 'deleteAfterRead'
? window.i18n('timerModeRead')
: window.i18n('timerModeSent');
let textToRender: string | undefined;
switch (type) {
case 'fromOther':
textToRender = disabled
? window.i18n('disabledDisappearingMessages', [contact, timespan])
: mode
? window.i18n('theyChangedTheTimer', [contact, timespan, mode])
: window.i18n('theyChangedTheTimerLegacy', [contact, timespan]);
break;
case 'fromMe':
case 'fromSync':
textToRender = disabled
? window.i18n('youDisabledDisappearingMessages')
: mode
? window.i18n('youChangedTheTimer', [timespan, mode])
: window.i18n('youChangedTheTimerLegacy', [timespan]);
break;
default:
assertUnreachable(type, `TimerNotification: Missing case error "${type}"`);
}
if (!textToRender || textToRender.length === 0) {
throw new Error('textToRender invalid key used TimerNotification');
}
return (
<ExpirableReadableMessage
messageId={messageId}
isCentered={true}
marginInlineStart={'calc(var(--margins-lg) + 6px)'}
marginInlineEnd={'calc(var(--margins-lg) + 6px)'}
key={`readable-message-${messageId}`}
dataTestId={'disappear-control-message'}
>
<Flex
container={true}
flexDirection="column"
alignItems="center"
justifyContent="center"
width="90%"
maxWidth="700px"
margin="10px auto"
padding="5px 10px"
style={{ textAlign: 'center' }}
>
<SessionIcon iconType="stopwatch" iconColor="inherit" iconSize="medium" />
<SpacerSM />
<Text text={textToRender} />
</Flex>
</ExpirableReadableMessage>
);
};