import { useEffect, useState } from 'react' import useSWR from 'swr' import { useTranslation } from 'react-i18next' import { PlusIcon } from '@heroicons/react/24/solid' import cn from 'classnames' import Indicator from '../../../indicator' import Operate from './operate' import s from './style.module.css' import NotionIcon from '@/app/components/base/notion-icon' import type { DataSourceNotion as TDataSourceNotion } from '@/models/common' import { useAppContext } from '@/context/app-context' import { fetchNotionConnection } from '@/service/common' type DataSourceNotionProps = { workspaces: TDataSourceNotion[] } const DataSourceNotion = ({ workspaces, }: DataSourceNotionProps) => { const { t } = useTranslation() const { isCurrentWorkspaceManager } = useAppContext() const [canConnectNotion, setCanConnectNotion] = useState(false) const { data } = useSWR(canConnectNotion ? '/oauth/data-source/notion' : null, fetchNotionConnection) const connected = !!workspaces.length const handleConnectNotion = () => { if (!isCurrentWorkspaceManager) return setCanConnectNotion(true) } const handleAuthAgain = () => { if (data?.data) window.location.href = data.data else setCanConnectNotion(true) } useEffect(() => { if (data?.data) window.location.href = data.data }, [data]) return (
{t('common.dataSource.notion.title')}
{ !connected && (
{t('common.dataSource.notion.description')}
) }
{ connected ? (
{t('common.dataSource.connect')}
) : (
{t('common.dataSource.notion.addWorkspace')}
) }
{ connected && (
{t('common.dataSource.notion.connectedWorkspace')}
) } { connected && (
{ workspaces.map(workspace => (
{workspace.source_info.workspace_name}
{ workspace.is_bound ? : }
{ workspace.is_bound ? t('common.dataSource.notion.connected') : t('common.dataSource.notion.disconnected') }
)) }
) }
) } export default DataSourceNotion