'use client' import React, { useState } from 'react' import { useTranslation } from 'react-i18next' import useSWR from 'swr' import { useWorkflowRun } from '../hooks' import VersionHistoryItem from './version-history-item' import type { VersionHistory } from '@/types/workflow' import { useStore as useAppStore } from '@/app/components/app/store' import { fetchPublishedAllWorkflow } from '@/service/workflow' import Loading from '@/app/components/base/loading' import Button from '@/app/components/base/button' const limit = 10 const VersionHistoryModal = () => { const [selectedVersion, setSelectedVersion] = useState('draft') const [page, setPage] = useState(1) const { handleRestoreFromPublishedWorkflow } = useWorkflowRun() const appDetail = useAppStore.getState().appDetail const { t } = useTranslation() const { data: versionHistory, isLoading, } = useSWR( `/apps/${appDetail?.id}/workflows?page=${page}&limit=${limit}`, fetchPublishedAllWorkflow, ) const handleVersionClick = (item: VersionHistory) => { if (item.version !== selectedVersion) { setSelectedVersion(item.version) handleRestoreFromPublishedWorkflow(item) } } const handleNextPage = () => { if (versionHistory?.has_more) setPage(page => page + 1) } return (
{(isLoading && page) === 1 ? (
) : ( <> {versionHistory?.items?.map((item, idx) => ( ))} {isLoading && page > 1 && (
)} {!isLoading && versionHistory?.has_more && (
)} {!isLoading && !versionHistory?.items?.length && (
{t('workflow.common.noHistory')}
)} )}
) } export default React.memo(VersionHistoryModal)