/* eslint-disable import/no-named-as-default */ import React from 'react'; import usePopover from '../../_hooks/use-popover'; import { LeftSidebarItem } from './SidebarItem'; import { DataSourceManager } from '../DataSourceManager'; import { DataSourceTypes } from '../DataSourceManager/SourceComponents'; import OverlayTrigger from 'react-bootstrap/esm/OverlayTrigger'; import Tooltip from 'react-bootstrap/esm/Tooltip'; import { getSvgIcon } from '@/_helpers/appUtils'; import { datasourceService } from '@/_services'; import { ConfirmDialog } from '@/_components'; import toast from 'react-hot-toast'; export const LeftSidebarDataSources = ({ appId, editingVersionId, darkMode, dataSources = [], dataSourcesChanged, dataQueriesChanged, toggleDataSourceManagerModal, showDataSourceManagerModal, }) => { const [open, trigger, content] = usePopover(false); const [selectedDataSource, setSelectedDataSource] = React.useState(null); const [isDeleteModalVisible, setDeleteModalVisibility] = React.useState(false); const [isDeletingDatasource, setDeletingDatasource] = React.useState(false); const deleteDataSource = (selectedSource) => { setSelectedDataSource(selectedSource); setDeleteModalVisibility(true); }; const executeDataSourceDeletion = () => { setDeleteModalVisibility(false); setDeletingDatasource(true); datasourceService .deleteDataSource(selectedDataSource.id) .then(() => { toast.success('Data Source Deleted'); setDeletingDatasource(false); setSelectedDataSource(null); dataSourcesChanged(); dataQueriesChanged(); }) .catch(({ error }) => { setDeletingDatasource(false); setSelectedDataSource(null); toast.error(error); }); }; const cancelDeleteDataSource = () => { setDeleteModalVisibility(false); setSelectedDataSource(null); }; const renderDataSource = (dataSource, idx) => { const sourceMeta = DataSourceTypes.find((source) => source.kind === dataSource.kind); return (