index.tsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. export interface IExploreProps {
  9. children: React.ReactNode
  10. }
  11. const Explore: FC<IExploreProps> = ({
  12. children
  13. }) => {
  14. const [controlUpdateInstalledApps, setControlUpdateInstalledApps] = useState(0)
  15. const { userProfile } = useAppContext()
  16. const [hasEditPermission, setHasEditPermission] = useState(false)
  17. const [installedApps, setInstalledApps] = useState<InstalledApp[]>([])
  18. useEffect(() => {
  19. (async () => {
  20. const { accounts } = await fetchMembers({ url: '/workspaces/current/members', params: {}})
  21. if(!accounts) return
  22. const currUser = accounts.find(account => account.id === userProfile.id)
  23. setHasEditPermission(currUser?.role !== 'normal')
  24. })()
  25. }, [])
  26. return (
  27. <div className='flex h-full bg-gray-100 border-t border-gray-200'>
  28. <ExploreContext.Provider
  29. value={
  30. {
  31. controlUpdateInstalledApps,
  32. setControlUpdateInstalledApps,
  33. hasEditPermission,
  34. installedApps,
  35. setInstalledApps
  36. }
  37. }
  38. >
  39. <Sidebar controlUpdateInstalledApps={controlUpdateInstalledApps} />
  40. <div className='grow'>
  41. {children}
  42. </div>
  43. </ExploreContext.Provider>
  44. </div>
  45. )
  46. }
  47. export default React.memo(Explore)