Render disappearing message timers generically

This commit is contained in:
Evan Hahn 2021-05-03 18:24:40 -05:00 committed by GitHub
parent c1730e055f
commit 736075322c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 372 additions and 307 deletions

View file

@ -19,10 +19,7 @@ import { InContactsIcon } from '../InContactsIcon';
import { LocalizerType } from '../../types/Util';
import { ConversationType } from '../../state/ducks/conversations';
import { MuteOption, getMuteOptions } from '../../util/getMuteOptions';
import {
ExpirationTimerOptions,
TimerOption,
} from '../../util/ExpirationTimerOptions';
import * as expirationTimer from '../../util/expirationTimer';
import { isMuted } from '../../util/isMuted';
import { missingCaseError } from '../../util/missingCaseError';
@ -219,16 +216,13 @@ export class ConversationHeader extends React.Component<PropsType, StateType> {
private renderExpirationLength(): ReactNode {
const { i18n, expireTimer } = this.props;
const expirationSettingName = expireTimer
? ExpirationTimerOptions.getAbbreviated(i18n, expireTimer)
: undefined;
if (!expirationSettingName) {
if (!expireTimer) {
return null;
}
return (
<div className="module-ConversationHeader__header__info__subtitle__expiration">
{expirationSettingName}
{expirationTimer.format(i18n, expireTimer)}
</div>
);
}
@ -434,16 +428,18 @@ export class ConversationHeader extends React.Component<PropsType, StateType> {
<ContextMenu id={triggerId}>
{disableTimerChanges ? null : (
<SubMenu title={disappearingTitle}>
{ExpirationTimerOptions.map((item: typeof TimerOption) => (
<MenuItem
key={item.get('seconds')}
onClick={() => {
onSetDisappearingMessages(item.get('seconds'));
}}
>
{item.getName(i18n)}
</MenuItem>
))}
{expirationTimer.DEFAULT_DURATIONS_IN_SECONDS.map(
(seconds: number) => (
<MenuItem
key={seconds}
onClick={() => {
onSetDisappearingMessages(seconds);
}}
>
{expirationTimer.format(i18n, seconds)}
</MenuItem>
)
)}
</SubMenu>
)}
<SubMenu title={muteTitle}>