mirror of
				https://github.com/langgenius/dify.git
				synced 2025-11-03 12:23:07 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
'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)
 |