import { SettingModal as SettingModalBase, type SettingModalProps, } from '@affine/component/setting-components'; import { WorkspaceFlavour } from '@affine/env/workspace'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { ContactWithUsIcon } from '@blocksuite/icons'; import type React from 'react'; import { useCallback, useMemo } from 'react'; import { useCurrentWorkspace } from '../../../hooks/current/use-current-workspace'; import { useWorkspaces } from '../../../hooks/use-workspaces'; import type { AllWorkspace } from '../../../shared'; import { AccountSetting } from './account-setting'; import { GeneralSetting, type GeneralSettingKeys, useGeneralSettingList, } from './general-setting'; import { SettingSidebar } from './setting-sidebar'; import { settingContent } from './style.css'; import { WorkSpaceSetting } from './workspace-setting'; type ActiveTab = GeneralSettingKeys | 'workspace' | 'account'; export type SettingProps = { activeTab?: ActiveTab; workspace?: AllWorkspace; onSettingClick: (params: { activeTab: ActiveTab; workspace?: AllWorkspace; }) => void; }; export const SettingModal: React.FC = ({ open, setOpen, activeTab = 'appearance', workspace = null, onSettingClick, }) => { const t = useAFFiNEI18N(); const workspaces = useWorkspaces(); const [currentWorkspace] = useCurrentWorkspace(); const generalSettingList = useGeneralSettingList(); const workspaceList = useMemo(() => { return workspaces.filter( ({ flavour }) => flavour !== WorkspaceFlavour.PUBLIC ) as AllWorkspace[]; }, [workspaces]); const onGeneralSettingClick = useCallback( (key: GeneralSettingKeys) => { onSettingClick({ activeTab: key, }); }, [onSettingClick] ); const onWorkspaceSettingClick = useCallback( (workspace: AllWorkspace) => { onSettingClick({ activeTab: 'workspace', workspace, }); }, [onSettingClick] ); const onAccountSettingClick = useCallback(() => { onSettingClick({ activeTab: 'account' }); }, [onSettingClick]); return (
{activeTab === 'workspace' && workspace ? ( ) : null} {generalSettingList.find(v => v.key === activeTab) ? ( ) : null} {activeTab === 'account' ? : null}
); };