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< { name?: string; setting: string }[] >([]) useEffect(() => { const getAllSettings = async () => { const extensionsMenu: { name?: string; setting: string }[] = [] const extensions = extensionManager.getAll() for (const extension of extensions) { if (typeof extension.getSettings === 'function') { const settings = await extension.getSettings() if ( (settings && settings.length > 0) || (await extension.installationState()) !== 'NotRequired' ) { extensionsMenu.push({ name: extension.productName, setting: extension.name, }) } } } setExtensionHasSettings(extensionsMenu) } getAllSettings() }, []) return (
{settingScreens.map((settingScreen) => ( ))} {extensionHasSettings.length > 0 && (
)} {extensionHasSettings.map((item) => ( ))}
) } export default React.memo(SettingMenu)