Merge pull request #1251 from palashgdev/1244-edit-alert

feat: rule id is passed as params
This commit is contained in:
Palash 2022-06-23 16:00:37 +05:30 committed by GitHub
commit 6dab77409d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 16 deletions

View File

@ -12,7 +12,7 @@ const ROUTES = {
ALL_DASHBOARD: '/dashboard', ALL_DASHBOARD: '/dashboard',
DASHBOARD: '/dashboard/:dashboardId', DASHBOARD: '/dashboard/:dashboardId',
DASHBOARD_WIDGET: '/dashboard/:dashboardId/:widgetId', DASHBOARD_WIDGET: '/dashboard/:dashboardId/:widgetId',
EDIT_ALERTS: '/alerts/edit/:ruleId', EDIT_ALERTS: '/alerts/edit',
LIST_ALL_ALERT: '/alerts', LIST_ALL_ALERT: '/alerts',
ALERTS_NEW: '/alerts/new', ALERTS_NEW: '/alerts/new',
ALL_CHANNELS: '/settings/channels', ALL_CHANNELS: '/settings/channels',

View File

@ -11,7 +11,6 @@ import React, { useCallback, useState } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { UseQueryResult } from 'react-query'; import { UseQueryResult } from 'react-query';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
import { generatePath } from 'react-router-dom';
import { AppState } from 'store/reducers'; import { AppState } from 'store/reducers';
import { ErrorResponse, SuccessResponse } from 'types/api'; import { ErrorResponse, SuccessResponse } from 'types/api';
import { Alerts } from 'types/api/alerts/getAll'; import { Alerts } from 'types/api/alerts/getAll';
@ -51,11 +50,7 @@ function ListAlert({ allAlertRules, refetch }: ListAlertProps): JSX.Element {
const [notifications, Element] = notification.useNotification(); const [notifications, Element] = notification.useNotification();
const onEditHandler = (id: string): void => { const onEditHandler = (id: string): void => {
history.push( history.push(`${ROUTES.EDIT_ALERTS}?ruleId=${id}`);
generatePath(ROUTES.EDIT_ALERTS, {
ruleId: id,
}),
);
}; };
const columns: ColumnsType<Alerts> = [ const columns: ColumnsType<Alerts> = [

View File

@ -1,23 +1,45 @@
import { notification } from 'antd';
import get from 'api/alerts/get'; import get from 'api/alerts/get';
import Spinner from 'components/Spinner'; import Spinner from 'components/Spinner';
import ROUTES from 'constants/routes';
import EditRulesContainer from 'container/EditRules'; import EditRulesContainer from 'container/EditRules';
import React from 'react'; import history from 'lib/history';
import React, { useEffect } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { useQuery } from 'react-query'; import { useQuery } from 'react-query';
import { useParams } from 'react-router-dom'; import { useLocation } from 'react-router-dom';
function EditRules(): JSX.Element { function EditRules(): JSX.Element {
const { ruleId } = useParams<EditRulesParam>(); const { search } = useLocation();
const params = new URLSearchParams(search);
const ruleId = params.get('ruleId');
const { t } = useTranslation('common'); const { t } = useTranslation('common');
const isValidRuleId = ruleId !== null && String(ruleId).length !== 0;
const { isLoading, data, isError } = useQuery(['ruleId', ruleId], { const { isLoading, data, isError } = useQuery(['ruleId', ruleId], {
queryFn: () => queryFn: () =>
get({ get({
id: parseInt(ruleId, 10), id: parseInt(ruleId || '', 10),
}), }),
enabled: isValidRuleId,
}); });
if (isError) { useEffect(() => {
if (!isValidRuleId) {
notification.error({
message: 'Rule Id is required',
});
history.replace(ROUTES.LIST_ALL_ALERT);
}
}, [isValidRuleId, ruleId]);
if (
(isError && !isValidRuleId) ||
ruleId == null ||
(data?.payload?.data === undefined && !isLoading)
) {
return <div>{data?.error || t('something_went_wrong')}</div>; return <div>{data?.error || t('something_went_wrong')}</div>;
} }
@ -28,8 +50,4 @@ function EditRules(): JSX.Element {
return <EditRulesContainer ruleId={ruleId} initialData={data.payload.data} />; return <EditRulesContainer ruleId={ruleId} initialData={data.payload.data} />;
} }
interface EditRulesParam {
ruleId: string;
}
export default EditRules; export default EditRules;