Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

index.tsx 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. 'use client'
  2. import type { FC } from 'react'
  3. import React, { useEffect, useState } from 'react'
  4. import { useRouter } from 'next/navigation'
  5. import ExploreContext from '@/context/explore-context'
  6. import Sidebar from '@/app/components/explore/sidebar'
  7. import { useAppContext } from '@/context/app-context'
  8. import { fetchMembers } from '@/service/common'
  9. import type { InstalledApp } from '@/models/explore'
  10. import { useTranslation } from 'react-i18next'
  11. import useDocumentTitle from '@/hooks/use-document-title'
  12. export type IExploreProps = {
  13. children: React.ReactNode
  14. }
  15. const Explore: FC<IExploreProps> = ({
  16. children,
  17. }) => {
  18. const router = useRouter()
  19. const [controlUpdateInstalledApps, setControlUpdateInstalledApps] = useState(0)
  20. const { userProfile, isCurrentWorkspaceDatasetOperator } = useAppContext()
  21. const [hasEditPermission, setHasEditPermission] = useState(false)
  22. const [installedApps, setInstalledApps] = useState<InstalledApp[]>([])
  23. const [isFetchingInstalledApps, setIsFetchingInstalledApps] = useState(false)
  24. const { t } = useTranslation()
  25. useDocumentTitle(t('common.menus.explore'))
  26. useEffect(() => {
  27. (async () => {
  28. const { accounts } = await fetchMembers({ url: '/workspaces/current/members', params: {} })
  29. if (!accounts)
  30. return
  31. const currUser = accounts.find(account => account.id === userProfile.id)
  32. setHasEditPermission(currUser?.role !== 'normal')
  33. })()
  34. }, [])
  35. useEffect(() => {
  36. if (isCurrentWorkspaceDatasetOperator)
  37. return router.replace('/datasets')
  38. }, [isCurrentWorkspaceDatasetOperator])
  39. return (
  40. <div className='flex h-full overflow-hidden border-t border-divider-regular bg-background-body'>
  41. <ExploreContext.Provider
  42. value={
  43. {
  44. controlUpdateInstalledApps,
  45. setControlUpdateInstalledApps,
  46. hasEditPermission,
  47. installedApps,
  48. setInstalledApps,
  49. isFetchingInstalledApps,
  50. setIsFetchingInstalledApps,
  51. }
  52. }
  53. >
  54. <Sidebar controlUpdateInstalledApps={controlUpdateInstalledApps} />
  55. <div className='w-0 grow'>
  56. {children}
  57. </div>
  58. </ExploreContext.Provider>
  59. </div>
  60. )
  61. }
  62. export default React.memo(Explore)