Files
2024-02-15 17:01:50 +00:00

75 lines
2.1 KiB
TypeScript

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 type {IgnoredStatusDetails} from 'sentry/types';
type Props = {
statusDetails: IgnoredStatusDetails;
};
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="dangerText" size="sm" />
<span>
{renderReason()}&nbsp;&mdash;&nbsp;
{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;