// Copyright 2021-2022 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import React, { useMemo, useState } from 'react'; import type { LocalizerType } from '../../../types/Util'; import { getMuteOptions } from '../../../util/getMuteOptions'; import { parseIntOrThrow } from '../../../util/parseIntOrThrow'; import { Checkbox } from '../../Checkbox'; import { Modal } from '../../Modal'; import { Button, ButtonVariant } from '../../Button'; type PropsType = { i18n: LocalizerType; muteExpiresAt: undefined | number; onClose: () => unknown; setMuteExpiration: (muteExpiresAt: undefined | number) => unknown; }; export const ConversationNotificationsModal = ({ i18n, muteExpiresAt, onClose, setMuteExpiration, }: PropsType): JSX.Element => { const muteOptions = useMemo( () => getMuteOptions(muteExpiresAt, i18n).map(({ disabled, name, value }) => ({ disabled, text: name, value, })), [i18n, muteExpiresAt] ); const [muteExpirationValue, setMuteExpirationValue] = useState(muteExpiresAt); const onMuteChange = () => { const ms = parseIntOrThrow( muteExpirationValue, 'NotificationSettings: mute ms was not an integer' ); setMuteExpiration(ms); onClose(); }; return ( {muteOptions .filter(x => x.value > 0) .map(option => ( value && setMuteExpirationValue(option.value)} /> ))} ); };