mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-17 15:36:48 +00:00
* chore: added jsx-runtime plugin in eslint tsconfig Signed-off-by: GermaVinsmoke <vaibhav1180@gmail.com> * chore: updated react imports Signed-off-by: GermaVinsmoke <vaibhav1180@gmail.com> * chore: renamed redux dispatch Signed-off-by: GermaVinsmoke <vaibhav1180@gmail.com> * fix: build is fixed --------- Signed-off-by: GermaVinsmoke <vaibhav1180@gmail.com> Co-authored-by: Palash Gupta <palashgdev@gmail.com>
75 lines
2.1 KiB
TypeScript
75 lines
2.1 KiB
TypeScript
/* eslint-disable react/display-name */
|
|
import { Button } from 'antd';
|
|
import { ColumnsType } from 'antd/lib/table';
|
|
import { ResizeTable } from 'components/ResizeTable';
|
|
import ROUTES from 'constants/routes';
|
|
import useComponentPermission from 'hooks/useComponentPermission';
|
|
import { useNotifications } from 'hooks/useNotifications';
|
|
import history from 'lib/history';
|
|
import { useCallback, useState } from 'react';
|
|
import { useTranslation } from 'react-i18next';
|
|
import { useSelector } from 'react-redux';
|
|
import { generatePath } from 'react-router-dom';
|
|
import { AppState } from 'store/reducers';
|
|
import { Channels, PayloadProps } from 'types/api/channels/getAll';
|
|
import AppReducer from 'types/reducer/app';
|
|
|
|
import Delete from './Delete';
|
|
|
|
function AlertChannels({ allChannels }: AlertChannelsProps): JSX.Element {
|
|
const { t } = useTranslation(['channels']);
|
|
const { notifications } = useNotifications();
|
|
const [channels, setChannels] = useState<Channels[]>(allChannels);
|
|
const { role } = useSelector<AppState, AppReducer>((state) => state.app);
|
|
const [action] = useComponentPermission(['new_alert_action'], role);
|
|
|
|
const onClickEditHandler = useCallback((id: string) => {
|
|
history.replace(
|
|
generatePath(ROUTES.CHANNELS_EDIT, {
|
|
id,
|
|
}),
|
|
);
|
|
}, []);
|
|
|
|
const columns: ColumnsType<Channels> = [
|
|
{
|
|
title: t('column_channel_name'),
|
|
dataIndex: 'name',
|
|
key: 'name',
|
|
width: 100,
|
|
},
|
|
{
|
|
title: t('column_channel_type'),
|
|
dataIndex: 'type',
|
|
key: 'type',
|
|
width: 80,
|
|
},
|
|
];
|
|
|
|
if (action) {
|
|
columns.push({
|
|
title: t('column_channel_action'),
|
|
dataIndex: 'id',
|
|
key: 'action',
|
|
align: 'center',
|
|
width: 80,
|
|
render: (id: string): JSX.Element => (
|
|
<>
|
|
<Button onClick={(): void => onClickEditHandler(id)} type="link">
|
|
{t('column_channel_edit')}
|
|
</Button>
|
|
<Delete id={id} setChannels={setChannels} notifications={notifications} />
|
|
</>
|
|
),
|
|
});
|
|
}
|
|
|
|
return <ResizeTable columns={columns} dataSource={channels} rowKey="id" />;
|
|
}
|
|
|
|
interface AlertChannelsProps {
|
|
allChannels: PayloadProps;
|
|
}
|
|
|
|
export default AlertChannels;
|