mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-10-14 14:31:28 +08:00

* feat: setup the app context to fetch users,licenses and feature flags * feat: added global event listeners for after_login event * feat: remove redux from app state and private route * feat: syncronize the approutes file * feat: cleanup the private routes * feat: handle login and logout * feat: cleanup the app layout file * feat: cleanup and syncronize side nav item * fix: minor small re-render issue * feat: parallel processing for sync calls for faster bootup of application * feat: some refactoring for private routes * fix: entire application too much re-rendering * fix: remove redux * feat: some more corrections * feat: fix all the files except signup * feat: add app provider to the test-utils * feat: should fix a lot of tests * chore: fix more tests * chore: fix more tests * feat: fix some tests and corrected the redux mock * feat: delete snapshot * fix: test cases * fix: pipeline actions test cases * fix: billing test cases * feat: update the signup API to accept isAnonymous and hasOptedUpdates * chore: cleanup the console logs * fix: indefinite loading on manage licenses screen * fix: better handling and route to something_went_wrong in case of qs down * fix: signup for subsequent users * chore: update test-utils * fix: jerky behaviour on entering the home page * feat: handle the retention for login context flow * fix: do not let users workaround workspace blocked screen
75 lines
2.0 KiB
TypeScript
75 lines
2.0 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 { useAppContext } from 'providers/App/App';
|
|
import { useCallback, useState } from 'react';
|
|
import { useTranslation } from 'react-i18next';
|
|
import { generatePath } from 'react-router-dom';
|
|
import { Channels, PayloadProps } from 'types/api/channels/getAll';
|
|
|
|
import Delete from './Delete';
|
|
|
|
function AlertChannels({ allChannels }: AlertChannelsProps): JSX.Element {
|
|
const { t } = useTranslation(['channels']);
|
|
const { notifications } = useNotifications();
|
|
const [channels, setChannels] = useState<Channels[]>(allChannels);
|
|
const { user } = useAppContext();
|
|
const [action] = useComponentPermission(['new_alert_action'], user.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" bordered />
|
|
);
|
|
}
|
|
|
|
interface AlertChannelsProps {
|
|
allChannels: PayloadProps;
|
|
}
|
|
|
|
export default AlertChannels;
|