import DateTime from 'sentry/components/dateTime'; import Duration from 'sentry/components/duration'; import {BannerContainer, BannerSummary} from 'sentry/components/events/styles'; import {IconMute} from 'sentry/icons'; import {t} from 'sentry/locale'; import {ResolutionStatusDetails} from 'sentry/types'; type Props = { statusDetails: ResolutionStatusDetails; }; function MutedBox({statusDetails}: Props) { function renderReason() { const {ignoreUntil, ignoreCount, ignoreWindow, ignoreUserCount, ignoreUserWindow} = statusDetails; if (ignoreUntil) { return t( 'This issue has been ignored until %s', <strong> <DateTime date={ignoreUntil} /> </strong> ); } if (ignoreCount && ignoreWindow) { return t( 'This issue has been ignored until it occurs %s time(s) in %s', <strong>{ignoreCount.toLocaleString()}</strong>, <strong> <Duration seconds={ignoreWindow * 60} /> </strong> ); } if (ignoreCount) { return t( 'This issue has been ignored until it occurs %s more time(s)', <strong>{ignoreCount.toLocaleString()}</strong> ); } if (ignoreUserCount && ignoreUserWindow) { return t( 'This issue has been ignored until it affects %s user(s) in %s', <strong>{ignoreUserCount.toLocaleString()}</strong>, <strong> <Duration seconds={ignoreUserWindow * 60} /> </strong> ); } if (ignoreUserCount) { return t( 'This issue has been ignored until it affects %s more user(s)', <strong>{ignoreUserCount.toLocaleString()}</strong> ); } return t('This issue has been ignored'); } return ( <BannerContainer priority="default"> <BannerSummary> <IconMute color="red300" size="sm" /> <span> {renderReason()} — {t( 'You will not be notified of any changes and it will not show up by default in feeds.' )} </span> </BannerSummary> </BannerContainer> ); } export default MutedBox;