123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 'use client'
- import type { FC } from 'react'
- import React, { useEffect, useState } from 'react'
- import { useRouter } from 'next/navigation'
- import { useTranslation } from 'react-i18next'
- import ExploreContext from '@/context/explore-context'
- import Sidebar from '@/app/components/explore/sidebar'
- import { useAppContext } from '@/context/app-context'
- import { fetchMembers } from '@/service/common'
- import type { InstalledApp } from '@/models/explore'
- export type IExploreProps = {
- children: React.ReactNode
- }
- const Explore: FC<IExploreProps> = ({
- children,
- }) => {
- const { t } = useTranslation()
- const router = useRouter()
- const [controlUpdateInstalledApps, setControlUpdateInstalledApps] = useState(0)
- const { userProfile, isCurrentWorkspaceDatasetOperator } = useAppContext()
- const [hasEditPermission, setHasEditPermission] = useState(false)
- const [installedApps, setInstalledApps] = useState<InstalledApp[]>([])
- useEffect(() => {
- document.title = `${t('explore.title')} - Dify`;
- (async () => {
- const { accounts } = await fetchMembers({ url: '/workspaces/current/members', params: {} })
- if (!accounts)
- return
- const currUser = accounts.find(account => account.id === userProfile.id)
- setHasEditPermission(currUser?.role !== 'normal')
- })()
- }, [])
- useEffect(() => {
- if (isCurrentWorkspaceDatasetOperator)
- return router.replace('/datasets')
- }, [isCurrentWorkspaceDatasetOperator])
- return (
- <div className='flex h-full bg-gray-100 border-t border-gray-200 overflow-hidden'>
- <ExploreContext.Provider
- value={
- {
- controlUpdateInstalledApps,
- setControlUpdateInstalledApps,
- hasEditPermission,
- installedApps,
- setInstalledApps,
- }
- }
- >
- <Sidebar controlUpdateInstalledApps={controlUpdateInstalledApps} />
- <div className='grow w-0'>
- {children}
- </div>
- </ExploreContext.Provider>
- </div>
- )
- }
- export default React.memo(Explore)
|