index.tsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. 'use client'
  2. import React, { FC, useEffect, useState } from 'react'
  3. import ExploreContext from '@/context/explore-context'
  4. import Sidebar from '@/app/components/explore/sidebar'
  5. import { useAppContext } from '@/context/app-context'
  6. import { fetchMembers } from '@/service/common'
  7. import { InstalledApp } from '@/models/explore'
  8. import { useTranslation } from 'react-i18next'
  9. export interface IExploreProps {
  10. children: React.ReactNode
  11. }
  12. const Explore: FC<IExploreProps> = ({
  13. children
  14. }) => {
  15. const { t } = useTranslation()
  16. const [controlUpdateInstalledApps, setControlUpdateInstalledApps] = useState(0)
  17. const { userProfile } = useAppContext()
  18. const [hasEditPermission, setHasEditPermission] = useState(false)
  19. const [installedApps, setInstalledApps] = useState<InstalledApp[]>([])
  20. useEffect(() => {
  21. document.title = `${t('explore.title')} - Dify`;
  22. (async () => {
  23. const { accounts } = await fetchMembers({ url: '/workspaces/current/members', params: {}})
  24. if(!accounts) return
  25. const currUser = accounts.find(account => account.id === userProfile.id)
  26. setHasEditPermission(currUser?.role !== 'normal')
  27. })()
  28. }, [])
  29. return (
  30. <div className='flex h-full bg-gray-100 border-t border-gray-200'>
  31. <ExploreContext.Provider
  32. value={
  33. {
  34. controlUpdateInstalledApps,
  35. setControlUpdateInstalledApps,
  36. hasEditPermission,
  37. installedApps,
  38. setInstalledApps
  39. }
  40. }
  41. >
  42. <Sidebar controlUpdateInstalledApps={controlUpdateInstalledApps} />
  43. <div className='grow'>
  44. {children}
  45. </div>
  46. </ExploreContext.Provider>
  47. </div>
  48. )
  49. }
  50. export default React.memo(Explore)