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.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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 { t } = useTranslation()
  24. useDocumentTitle(t('common.menus.explore'))
  25. useEffect(() => {
  26. (async () => {
  27. const { accounts } = await fetchMembers({ url: '/workspaces/current/members', params: {} })
  28. if (!accounts)
  29. return
  30. const currUser = accounts.find(account => account.id === userProfile.id)
  31. setHasEditPermission(currUser?.role !== 'normal')
  32. })()
  33. }, [])
  34. useEffect(() => {
  35. if (isCurrentWorkspaceDatasetOperator)
  36. return router.replace('/datasets')
  37. }, [isCurrentWorkspaceDatasetOperator])
  38. return (
  39. <div className='flex h-full overflow-hidden border-t border-divider-regular bg-background-body'>
  40. <ExploreContext.Provider
  41. value={
  42. {
  43. controlUpdateInstalledApps,
  44. setControlUpdateInstalledApps,
  45. hasEditPermission,
  46. installedApps,
  47. setInstalledApps,
  48. }
  49. }
  50. >
  51. <Sidebar controlUpdateInstalledApps={controlUpdateInstalledApps} />
  52. <div className='w-0 grow'>
  53. {children}
  54. </div>
  55. </ExploreContext.Provider>
  56. </div>
  57. )
  58. }
  59. export default React.memo(Explore)