import React, { useEffect, useState } from 'react' import { ScrollArea } from '@janhq/uikit' import { useAtomValue } from 'jotai' import SettingItem from './SettingItem' import { extensionManager } from '@/extension' import { janSettingScreenAtom } from '@/helpers/atoms/Setting.atom' const SettingMenu: React.FC = () => { const settingScreens = useAtomValue(janSettingScreenAtom) const [extensionHasSettings, setExtensionHasSettings] = useState([]) useEffect(() => { const getAllSettings = async () => { const activeExtensions = await extensionManager.getActive() const extensionsMenu: string[] = [] for (const extension of activeExtensions) { const extensionName = extension.name if (!extensionName) continue const baseExtension = extensionManager.get(extensionName) if (!baseExtension) continue if (typeof baseExtension.getSettings === 'function') { const settings = await baseExtension.getSettings() if (settings && settings.length > 0) { extensionsMenu.push(extensionName) } } } setExtensionHasSettings(extensionsMenu) } getAllSettings() }, []) return (
{settingScreens.map((settingScreen) => ( ))} {extensionHasSettings.length > 0 && (
)} {extensionHasSettings.map((extensionName: string) => ( ))}
) } export default React.memo(SettingMenu)