|
'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) |
|
|