mutedBox.tsx 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import DateTime from 'app/components/dateTime';
  2. import Duration from 'app/components/duration';
  3. import {BannerContainer, BannerSummary} from 'app/components/events/styles';
  4. import {IconMute} from 'app/icons';
  5. import {t} from 'app/locale';
  6. import {ResolutionStatusDetails} from 'app/types';
  7. type Props = {
  8. statusDetails: ResolutionStatusDetails;
  9. };
  10. function MutedBox({statusDetails}: Props) {
  11. function renderReason() {
  12. const {ignoreUntil, ignoreCount, ignoreWindow, ignoreUserCount, ignoreUserWindow} =
  13. statusDetails;
  14. if (ignoreUntil) {
  15. return t(
  16. 'This issue has been ignored until %s',
  17. <strong>
  18. <DateTime date={ignoreUntil} />
  19. </strong>
  20. );
  21. } else if (ignoreCount && ignoreWindow) {
  22. return t(
  23. 'This issue has been ignored until it occurs %s time(s) in %s',
  24. <strong>{ignoreCount.toLocaleString()}</strong>,
  25. <strong>
  26. <Duration seconds={ignoreWindow * 60} />
  27. </strong>
  28. );
  29. } else if (ignoreCount) {
  30. return t(
  31. 'This issue has been ignored until it occurs %s more time(s)',
  32. <strong>{ignoreCount.toLocaleString()}</strong>
  33. );
  34. } else if (ignoreUserCount && ignoreUserWindow) {
  35. return t(
  36. 'This issue has been ignored until it affects %s user(s) in %s',
  37. <strong>{ignoreUserCount.toLocaleString()}</strong>,
  38. <strong>
  39. <Duration seconds={ignoreUserWindow * 60} />
  40. </strong>
  41. );
  42. } else if (ignoreUserCount) {
  43. return t(
  44. 'This issue has been ignored until it affects %s more user(s)',
  45. <strong>{ignoreUserCount.toLocaleString()}</strong>
  46. );
  47. }
  48. return t('This issue has been ignored');
  49. }
  50. return (
  51. <BannerContainer priority="default">
  52. <BannerSummary>
  53. <IconMute color="red300" size="sm" />
  54. <span>
  55. {renderReason()}&nbsp;&mdash;&nbsp;
  56. {t(
  57. 'You will not be notified of any changes and it will not show up by default in feeds.'
  58. )}
  59. </span>
  60. </BannerSummary>
  61. </BannerContainer>
  62. );
  63. }
  64. export default MutedBox;