mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-17 15:36:48 +00:00
* feat: aws Integration skeleton UI (#6758) * feat: add AWS integration in the integrations list and redirect to the new Cloud Integration page * feat: cloud integration details page header (i.e. breadcrumb and get help button) UI * feat: hero section UI * refactor: extract Header and HeroSection components from CloudIntegrationPage * feat: services tab bar and sidebar UI * feat: cloud integration details services UI * refactor: group and extract cloud integration components to files * fix: set default active service to the first service in the list if no service is specified * feat: add NEW flag for AWS integration in the integrations list page * chore: overall improvements * chore: move cloud integration pages to /container * fix: hero section background * feat: aws Integration: Account setup basic UI and functionality (#6806) * feat: implement basic cloud account management UI in HeroSection * feat: aws Integration: Integrate now modal (#6807) * feat: implement basic cloud account management UI in HeroSection * feat: start working on integrate now modal UI * feat: integrate now modal UI * feat: integrate now modal states and json server API integration * feat: get accounts from json-server API, and redirect Add new account to the integrations modal * feat: display error state if last_heartbeat_ts_ms is null even after 5 minutes * chore: update import path for regions data in useRegionSelection hook * chore: move hero section components inside the HeroSection/components * feat: create a reusable modal component * refactor: make the cloud account setup modal readable / DRYer * feat: aws Integration: Account settings modal (#6808) * feat: implement basic cloud account management UI in HeroSection * feat: start working on integrate now modal UI * feat: get accounts from json-server API, and redirect Add new account to the integrations modal * feat: integrate now modal UI * feat: integrate now modal states and json server API integration * feat: account settings * feat: service status UI * refactor: make account settings modal more readable and overall improvements * feat: Get data from json server api data in service sections (#6809) * feat: implement basic cloud account management UI in HeroSection * feat: start working on integrate now modal UI * feat: get accounts from json-server API, and redirect Add new account to the integrations modal * refactor: make the cloud account setup modal readable / DRYer * feat: integrate now modal states and json server API integration * refactor: make account settings modal more readable and overall improvements * feat: integrate now modal states and json server API integration * feat: display error state if last_heartbeat_ts_ms is null even after 5 minutes * feat: get the services list and details from json server API response * feat: update account actions to set accountId in URL query on initial account load * feat: configure service modal (#6814) * feat: implement basic cloud account management UI in HeroSection * feat: start working on integrate now modal UI * feat: get accounts from json-server API, and redirect Add new account to the integrations modal * refactor: make the cloud account setup modal readable / DRYer * feat: integrate now modal states and json server API integration * feat: get accounts from json-server API, and redirect Add new account to the integrations modal * feat: integrate now modal states and json server API integration * feat: get accounts from json-server API, and redirect Add new account to the integrations modal * feat: display error state if last_heartbeat_ts_ms is null even after 5 minutes * feat: account settings * feat: service status UI * feat: get the services list and details from json server API response * feat: update account actions to set accountId in URL query on initial account load * feat: configure service modal UI * feat: configure service modal functionality and API changes * feat: replace loading indicators with Spinner component in ServiceDetails and ServicesList * fix: make the configure service modal work * feat: light mode support and overall improvements to AWS integration page (#6817) * refactor: make the cloud account setup modal readable / DRYer * feat: integrate now modal states and json server API integration * refactor: make account settings modal more readable and overall improvements * fix: integrate now modal button improvements * feat: aws integrations light mode * refactor: overall improvements * refactor: define react query keys in constant * feat: services filter * feat: render service overview as markdown * feat: integrate AWS integration page API (#6851) * feat: replace json-server APIs with actual APIs * fix: add null checks and fix the issues * chore: remove the console.log * feat: temporarily hide AWS Integration from integrations list * chore: add optimized png * refactor: extract service filter types into an enum * chore: remove console.log * chore: remove duplicate files * refactor: move regions to utils * fix: get account id from url param * chore: address PR review comments * refactor: use the IntegrateNowFormSections inside RegionForm * chore: move integrations select inline style to a common class --------- Co-authored-by: Shaheer Kochai <ashaheerki@gmail.com>
113 lines
3.0 KiB
TypeScript
113 lines
3.0 KiB
TypeScript
import './IntegrationDetailPage.styles.scss';
|
|
|
|
import { Button, Modal, Typography } from 'antd';
|
|
import logEvent from 'api/common/logEvent';
|
|
import unInstallIntegration from 'api/Integrations/uninstallIntegration';
|
|
import { SOMETHING_WENT_WRONG } from 'constants/api';
|
|
import { useNotifications } from 'hooks/useNotifications';
|
|
import { X } from 'lucide-react';
|
|
import { useState } from 'react';
|
|
import { useMutation } from 'react-query';
|
|
|
|
import { INTEGRATION_TELEMETRY_EVENTS } from '../utils';
|
|
import { ConnectionStates } from './TestConnection';
|
|
|
|
interface IntergrationsUninstallBarProps {
|
|
integrationTitle: string;
|
|
integrationId: string;
|
|
onUnInstallSuccess: () => void;
|
|
connectionStatus: ConnectionStates;
|
|
removeIntegrationTitle?: string;
|
|
}
|
|
function IntergrationsUninstallBar(
|
|
props: IntergrationsUninstallBarProps,
|
|
): JSX.Element {
|
|
const {
|
|
integrationTitle,
|
|
integrationId,
|
|
onUnInstallSuccess,
|
|
connectionStatus,
|
|
removeIntegrationTitle = 'Remove from SigNoz',
|
|
} = props;
|
|
const { notifications } = useNotifications();
|
|
const [isModalOpen, setIsModalOpen] = useState(false);
|
|
|
|
const {
|
|
mutate: uninstallIntegration,
|
|
isLoading: isUninstallLoading,
|
|
} = useMutation(unInstallIntegration, {
|
|
onSuccess: () => {
|
|
onUnInstallSuccess?.();
|
|
setIsModalOpen(false);
|
|
},
|
|
onError: () => {
|
|
notifications.error({
|
|
message: SOMETHING_WENT_WRONG,
|
|
});
|
|
},
|
|
});
|
|
|
|
const showModal = (): void => {
|
|
setIsModalOpen(true);
|
|
};
|
|
|
|
const handleOk = (): void => {
|
|
logEvent(
|
|
INTEGRATION_TELEMETRY_EVENTS.INTEGRATIONS_DETAIL_REMOVE_INTEGRATION,
|
|
{
|
|
integration: integrationId,
|
|
integrationStatus: connectionStatus,
|
|
},
|
|
);
|
|
uninstallIntegration({
|
|
integration_id: integrationId,
|
|
});
|
|
};
|
|
|
|
const handleCancel = (): void => {
|
|
setIsModalOpen(false);
|
|
};
|
|
return (
|
|
<div className="uninstall-integration-bar">
|
|
<div className="unintall-integration-bar-text">
|
|
<Typography.Text className="heading">Remove Integration</Typography.Text>
|
|
<Typography.Text className="subtitle">
|
|
Removing the {integrationTitle} integration would make your workspace stop
|
|
listening for data from {integrationTitle} instances.
|
|
</Typography.Text>
|
|
</div>
|
|
<Button
|
|
className="uninstall-integration-btn"
|
|
icon={<X size={14} />}
|
|
onClick={(): void => showModal()}
|
|
>
|
|
{removeIntegrationTitle}
|
|
</Button>
|
|
<Modal
|
|
className="remove-integration-modal"
|
|
open={isModalOpen}
|
|
title="Remove integration"
|
|
onOk={handleOk}
|
|
onCancel={handleCancel}
|
|
okText="Remove Integration"
|
|
okButtonProps={{
|
|
danger: true,
|
|
disabled: isUninstallLoading,
|
|
}}
|
|
>
|
|
<Typography.Text className="remove-integration-text">
|
|
Removing this integration makes SigNoz stop listening for data from{' '}
|
|
{integrationTitle} instances. You would still have to manually remove the
|
|
configuration in your code to stop sending data.
|
|
</Typography.Text>
|
|
</Modal>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
IntergrationsUninstallBar.defaultProps = {
|
|
removeIntegrationTitle: 'Remove from SigNoz',
|
|
};
|
|
|
|
export default IntergrationsUninstallBar;
|