Vikrant Gupta 28d27bc5c1
fix(frontend): do not use redirects outside the react router (#6739)
* fix(frontend): use history.replace to something went wrong instead of redirects

* fix(frontend): update the something went wrong page to error boundary fallback
2025-01-02 13:30:31 +05:30

236 lines
5.1 KiB
TypeScript

/* eslint-disable sonarjs/no-duplicate-string */
import ROUTES from 'constants/routes';
type FiveMin = '5m';
type TenMin = '10m';
type FifteenMin = '15m';
type ThirtyMin = '30m';
type FortyFiveMin = '45m';
type OneMin = '1m';
type ThreeHour = '3h';
type SixHour = '6h';
type OneHour = '1h';
type FourHour = '4h';
type TwelveHour = '12h';
type OneDay = '1d';
type ThreeDay = '3d';
type FourDay = '4d';
type TenDay = '10d';
type OneWeek = '1w';
type TwoWeek = '2w';
type SixWeek = '6w';
type OneMonth = '1month';
type TwoMonths = '2months';
type Custom = 'custom';
export type Time =
| FiveMin
| TenMin
| FifteenMin
| ThirtyMin
| OneMin
| ThreeHour
| FourHour
| SixHour
| OneHour
| Custom
| OneWeek
| SixWeek
| OneDay
| FourDay
| ThreeDay
| FortyFiveMin
| TwelveHour
| TenDay
| TwoWeek
| OneMonth
| TwoMonths;
export type TimeUnit = 'm' | 'h' | 'd' | 'w';
export type CustomTimeType = `${string}${TimeUnit}`;
export const Options: Option[] = [
{ value: '5m', label: 'Last 5 minutes' },
{ value: '15m', label: 'Last 15 minutes' },
{ value: '30m', label: 'Last 30 minutes' },
{ value: '1h', label: 'Last 1 hour' },
{ value: '6h', label: 'Last 6 hours' },
{ value: '1d', label: 'Last 1 day' },
{ value: '3d', label: 'Last 3 days' },
{ value: '1w', label: 'Last 1 week' },
{ value: '1month', label: 'Last 1 month' },
{ value: 'custom', label: 'Custom' },
];
export interface Option {
value: Time;
label: string;
}
export const OLD_RELATIVE_TIME_VALUES = [
'1min',
'10min',
'15min',
'1hr',
'30min',
'45min',
'5min',
'1day',
'3days',
'4days',
'10days',
'1week',
'2weeks',
'6weeks',
'3hr',
'4hr',
'6hr',
'12hr',
];
export const RelativeDurationOptions: Option[] = [
{ value: '5m', label: 'Last 5 minutes' },
{ value: '15m', label: 'Last 15 minutes' },
{ value: '30m', label: 'Last 30 minutes' },
{ value: '1h', label: 'Last 1 hour' },
{ value: '6h', label: 'Last 6 hour' },
{ value: '1d', label: 'Last 1 day' },
{ value: '3d', label: 'Last 3 days' },
{ value: '1w', label: 'Last 1 week' },
{ value: '1month', label: 'Last 1 month' },
];
export const RelativeDurationSuggestionOptions: Option[] = [
{ value: '3h', label: 'Last 3 hours' },
{ value: '4d', label: 'Last 4 days' },
{ value: '6w', label: 'Last 6 weeks' },
{ value: '12h', label: 'Last 12 hours' },
{ value: '10d', label: 'Last 10 days' },
{ value: '2w', label: 'Last 2 weeks' },
{ value: '2months', label: 'Last 2 months' },
{ value: '1d', label: 'today' },
];
export const FixedDurationSuggestionOptions: Option[] = [
{ value: '45m', label: 'Last 45 mins' },
{ value: '12h', label: 'Last 12 hours' },
{ value: '10d', label: 'Last 10 days' },
{ value: '2w', label: 'Last 2 weeks' },
{ value: '2months', label: 'Last 2 months' },
{ value: '1d', label: 'today' },
];
export const convertOldTimeToNewValidCustomTimeFormat = (
time: string,
): CustomTimeType => {
const regex = /^(\d+)([a-zA-Z]+)/;
const match = regex.exec(time);
if (match) {
let unit = 'm';
switch (match[2]) {
case 'min':
unit = 'm';
break;
case 'hr':
unit = 'h';
break;
case 'day':
case 'days':
unit = 'd';
break;
case 'week':
case 'weeks':
unit = 'w';
break;
default:
break;
}
return `${match[1]}${unit}` as CustomTimeType;
}
return '30m';
};
export const getDefaultOption = (route: string): Time => {
if (route === ROUTES.SERVICE_MAP) {
return RelativeDurationOptions[2].value;
}
if (route === ROUTES.APPLICATION) {
return Options[2].value;
}
return Options[2].value;
};
export const getOptions = (routes: string): Option[] => {
if (routes === ROUTES.SERVICE_MAP) {
return RelativeDurationOptions;
}
return Options;
};
export const routesToHideBreadCrumbs = [ROUTES.SUPPORT, ROUTES.ALL_DASHBOARD];
export const routesToSkip = [
ROUTES.SETTINGS,
ROUTES.LIST_ALL_ALERT,
ROUTES.TRACE_DETAIL,
ROUTES.ALL_CHANNELS,
ROUTES.USAGE_EXPLORER,
ROUTES.GET_STARTED,
ROUTES.GET_STARTED_APPLICATION_MONITORING,
ROUTES.GET_STARTED_INFRASTRUCTURE_MONITORING,
ROUTES.GET_STARTED_LOGS_MANAGEMENT,
ROUTES.GET_STARTED_AWS_MONITORING,
ROUTES.GET_STARTED_AZURE_MONITORING,
ROUTES.VERSION,
ROUTES.ALL_DASHBOARD,
ROUTES.ORG_SETTINGS,
ROUTES.INGESTION_SETTINGS,
ROUTES.API_KEYS,
ROUTES.ERROR_DETAIL,
ROUTES.LOGS_PIPELINES,
ROUTES.BILLING,
ROUTES.SUPPORT,
ROUTES.WORKSPACE_LOCKED,
ROUTES.WORKSPACE_SUSPENDED,
ROUTES.LOGS,
ROUTES.MY_SETTINGS,
ROUTES.LIST_LICENSES,
ROUTES.LOGS_SAVE_VIEWS,
ROUTES.LOGS_PIPELINES,
ROUTES.TRACES_EXPLORER,
ROUTES.TRACES_SAVE_VIEWS,
ROUTES.SHORTCUTS,
ROUTES.INTEGRATIONS,
ROUTES.DASHBOARD,
ROUTES.DASHBOARD_WIDGET,
ROUTES.SERVICE_TOP_LEVEL_OPERATIONS,
ROUTES.ALERT_HISTORY,
ROUTES.ALERT_OVERVIEW,
ROUTES.MESSAGING_QUEUES,
ROUTES.MESSAGING_QUEUES_DETAIL,
ROUTES.INFRASTRUCTURE_MONITORING_HOSTS,
ROUTES.SOMETHING_WENT_WRONG,
];
export const routesToDisable = [ROUTES.LOGS_EXPLORER, ROUTES.LIVE_LOGS];
export interface LocalStorageTimeRange {
localstorageStartTime: string | null;
localstorageEndTime: string | null;
}
export interface TimeRange {
startTime: string;
endTime: string;
}
export enum LexicalContext {
CUSTOM_DATE_PICKER = 'customDatePicker',
CUSTOM_DATE_TIME_INPUT = 'customDateTimeInput',
}