123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- import capitalize from 'lodash/capitalize';
- import ExternalLink from 'sentry/components/links/externalLink';
- import {t, tct, tn} from 'sentry/locale';
- import ExtraDescription from './extraDescription';
- export const BULK_LIMIT = 1000;
- export const BULK_LIMIT_STR = BULK_LIMIT.toLocaleString();
- export enum ConfirmAction {
- RESOLVE = 'resolve',
- UNRESOLVE = 'unresolve',
- IGNORE = 'ignore',
- BOOKMARK = 'bookmark',
- UNBOOKMARK = 'unbookmark',
- MERGE = 'merge',
- DELETE = 'delete',
- }
- function getBulkConfirmMessage(action: string, queryCount: number) {
- if (queryCount > BULK_LIMIT) {
- return tct(
- 'Are you sure you want to [action] the first [bulkNumber] issues that match the search?',
- {
- action,
- bulkNumber: BULK_LIMIT_STR,
- }
- );
- }
- return tct(
- 'Are you sure you want to [action] all [bulkNumber] issues that match the search?',
- {
- action,
- bulkNumber: queryCount,
- }
- );
- }
- export function getConfirm(
- numIssues: number,
- allInQuerySelected: boolean,
- query: string,
- queryCount: number
- ) {
- return function (action: ConfirmAction | string, canBeUndone: boolean, append = '') {
- const question = allInQuerySelected
- ? getBulkConfirmMessage(`${action}${append}`, queryCount)
- : tn(
- `Are you sure you want to ${action} this %s issue${append}?`,
- `Are you sure you want to ${action} these %s issues${append}?`,
- numIssues
- );
- let message;
- switch (action) {
- case ConfirmAction.DELETE:
- message = tct(
- 'Bulk deletion is only recommended for junk data. To clear your stream, consider resolving or ignoring. [link:When should I delete events?]',
- {
- link: (
- <ExternalLink href="https://help.sentry.io/account/billing/when-should-i-delete-events/" />
- ),
- }
- );
- break;
- case ConfirmAction.MERGE:
- message = t('Note that unmerging is currently an experimental feature.');
- break;
- default:
- message = t('This action cannot be undone.');
- }
- return (
- <div>
- <p style={{marginBottom: '20px'}}>
- <strong>{question}</strong>
- </p>
- <ExtraDescription
- all={allInQuerySelected}
- query={query}
- queryCount={queryCount}
- />
- {!canBeUndone && <p>{message}</p>}
- </div>
- );
- };
- }
- export function getLabel(numIssues: number, allInQuerySelected: boolean) {
- return function (action: string, append = '') {
- const capitalized = capitalize(action);
- const text = allInQuerySelected
- ? t(`Bulk ${action} issues`)
- : tn(
- `${capitalized} %s selected issue`,
- `${capitalized} %s selected issues`,
- numIssues
- );
- return text + append;
- };
- }
|