'use client' import React, { FC, useEffect } from 'react' import { useTranslation } from 'react-i18next' import cn from 'classnames' import { useSelectedLayoutSegments } from 'next/navigation' import Link from 'next/link' import Item from './app-nav-item' import { InstalledApp } from '@/models/explore' import { fetchInstalledAppList as doFetchInstalledAppList } from '@/service/explore' const SelectedDiscoveryIcon = () => ( ) const DiscoveryIcon = () => ( ) const SideBar: FC<{ controlUpdateInstalledApps: number }> = ({ controlUpdateInstalledApps }) => { const { t } = useTranslation() const segments = useSelectedLayoutSegments() const lastSegment = segments.slice(-1)[0] const isDiscoverySelected = lastSegment === 'apps' const [installedApps, setInstalledApps] = React.useState([]) const fetchInstalledAppList = async () => { const {installed_apps} : any = await doFetchInstalledAppList() setInstalledApps(installed_apps) } useEffect(() => { fetchInstalledAppList() }, []) useEffect(() => { fetchInstalledAppList() }, [controlUpdateInstalledApps]) return ( {isDiscoverySelected ? : } {t('explore.sidebar.discovery')} {installedApps.length > 0 && ( {t('explore.sidebar.workspace')} {installedApps.map(({app : {id, name}}) => { return ( ) })} )} ) } export default React.memo(SideBar)