'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' import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints' import { useStore } from '@/app/components/app/store' export type IExploreProps = { children: React.ReactNode } const Explore: FC = ({ 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([]) const media = useBreakpoints() const isMobile = media === MediaType.mobile const setAppSiderbarExpand = useStore(state => state.setAppSiderbarExpand) 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]) useEffect(() => { const localeMode = localStorage.getItem('app-detail-collapse-or-expand') || 'expand' const mode = isMobile ? 'collapse' : 'expand' setAppSiderbarExpand(isMobile ? mode : localeMode) }, [isMobile, setAppSiderbarExpand]) return (
{children}
) } export default React.memo(Explore)