You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

layout.tsx 1.2KB

123456789101112131415161718192021222324252627282930
  1. 'use client'
  2. import Loading from '@/app/components/base/loading'
  3. import { useAppContext } from '@/context/app-context'
  4. import { ExternalApiPanelProvider } from '@/context/external-api-panel-context'
  5. import { ExternalKnowledgeApiProvider } from '@/context/external-knowledge-api-context'
  6. import { useRouter } from 'next/navigation'
  7. import { useEffect } from 'react'
  8. export default function DatasetsLayout({ children }: { children: React.ReactNode }) {
  9. const { isCurrentWorkspaceEditor, isCurrentWorkspaceDatasetOperator, currentWorkspace, isLoadingCurrentWorkspace } = useAppContext()
  10. const router = useRouter()
  11. useEffect(() => {
  12. if (isLoadingCurrentWorkspace || !currentWorkspace.id)
  13. return
  14. if (!(isCurrentWorkspaceEditor || isCurrentWorkspaceDatasetOperator))
  15. router.replace('/apps')
  16. }, [isCurrentWorkspaceEditor, isCurrentWorkspaceDatasetOperator, isLoadingCurrentWorkspace, currentWorkspace, router])
  17. if (isLoadingCurrentWorkspace || !(isCurrentWorkspaceEditor || isCurrentWorkspaceDatasetOperator))
  18. return <Loading type='app' />
  19. return (
  20. <ExternalKnowledgeApiProvider>
  21. <ExternalApiPanelProvider>
  22. {children}
  23. </ExternalApiPanelProvider>
  24. </ExternalKnowledgeApiProvider>
  25. )
  26. }