Skip to content

Commit 5958237

Browse files
committed
Cleanup
1 parent 508e2e0 commit 5958237

File tree

2 files changed

+52
-38
lines changed

2 files changed

+52
-38
lines changed

src/reactComponents/FileManageModal.tsx

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,37 @@ type FileManageModalProps = {
4545
export default function FileManageModal(props: FileManageModalProps) {
4646
const { t } = I18Next.useTranslation();
4747
const [modules, setModules] = React.useState<Module[]>([]);
48-
const [loading, setLoading] = React.useState(false);
4948
const [newItemName, setNewItemName] = React.useState('');
5049
const [currentRecord, setCurrentRecord] = React.useState<Module | null>(null);
5150
const [renameModalOpen, setRenameModalOpen] = React.useState(false);
5251
const [name, setName] = React.useState('');
5352
const [copyModalOpen, setCopyModalOpen] = React.useState(false);
5453

5554
React.useEffect(() => {
56-
if (props.project && props.moduleType !== null) {
55+
const loadModules = async (storage : commonStorage.Storage) => {
56+
let moduleList: Module[] = [];
57+
let projects = await storage.listModules()
58+
projects.forEach((project) => {
59+
if (project.className && project.modulePath) {
60+
moduleList.push({
61+
path: project.modulePath,
62+
title: project.className,
63+
type: TabType.PROJECT
64+
});
65+
}
66+
});
67+
// Sort modules alphabetically by title
68+
moduleList.sort((a, b) => a.title.localeCompare(b.title));
69+
setModules(moduleList);
70+
}
71+
72+
if( props.moduleType === TabType.PROJECT ) {
73+
let moduleList: Module[] = [];
74+
if(props.storage){
75+
loadModules(props.storage);
76+
}
77+
}
78+
else if (props.project && props.moduleType !== null) {
5779
let moduleList: Module[] = [];
5880

5981
if (props.moduleType === TabType.MECHANISM) {
@@ -79,22 +101,6 @@ export default function FileManageModal(props: FileManageModalProps) {
79101
}
80102
}, [props.project, props.moduleType]);
81103

82-
const handleDelete = async (module: Module) => {
83-
if (props.storage && props.project) {
84-
setLoading(true);
85-
try {
86-
await commonStorage.removeModuleFromProject(props.storage, props.project, module.path);
87-
// Remove from local state
88-
setModules(modules.filter(m => m.path !== module.path));
89-
} catch (error) {
90-
console.error('Error deleting module:', error);
91-
Antd.message.error('Failed to delete module');
92-
} finally {
93-
setLoading(false);
94-
}
95-
}
96-
};
97-
98104
const handleRename = async (origModule: Module, newName: string) => {
99105
if (props.storage && props.project) {
100106
try {
@@ -347,7 +353,6 @@ export default function FileManageModal(props: FileManageModalProps) {
347353
columns={columns}
348354
dataSource={modules}
349355
rowKey="path"
350-
loading={loading}
351356
size="small"
352357
pagination={modules.length > 5 ? {
353358
pageSize: 5,

src/reactComponents/Menu.tsx

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -151,29 +151,35 @@ export function Component(props: MenuProps) {
151151
});
152152
};
153153

154-
const handleSelect: Antd.MenuProps['onSelect'] = ({ key }) => {
154+
const openModal = React.useCallback((type: TabType) => {
155+
console.log('openModal called with type:', type);
156+
setFileModalOpen(false); // Always close first
157+
setModuleType(type);
158+
159+
// Use setTimeout to ensure the close happens first
160+
setTimeout(() => {
161+
console.log('Setting fileModalOpen to true');
162+
setFileModalOpen(true);
163+
}, 0);
164+
}, []);
165+
166+
const handleClick: Antd.MenuProps['onClick'] = ({ key }) => {
155167
let newModule = props.project ? commonStorage.findModuleInProject(props.project, key) : null;
156168
if (newModule) {
157169
props.gotoTab(newModule.modulePath);
158170
}
159171
else {
160-
if(key === 'manageMechanisms'){
161-
if (!fileModalOpen || moduleType !== TabType.MECHANISM) {
162-
setFileModalOpen(true);
163-
setModuleType(TabType.MECHANISM);
164-
}
165-
}else if(key === 'manageOpmodes'){
166-
if (!fileModalOpen || moduleType !== TabType.OPMODE) {
167-
setFileModalOpen(true);
168-
setModuleType(TabType.OPMODE);
169-
}
170-
}else if(key === 'manageProjects'){
171-
if (!fileModalOpen || moduleType !== TabType.PROJECT) {
172-
setFileModalOpen(true);
173-
setModuleType(TabType.PROJECT);
174-
}
172+
if (key === 'manageMechanisms') {
173+
setModuleType(TabType.MECHANISM);
174+
setFileModalOpen(true);
175+
} else if (key === 'manageOpmodes') {
176+
setModuleType(TabType.OPMODE);
177+
setFileModalOpen(true);
178+
} else if (key === 'manageProjects') {
179+
setModuleType(TabType.PROJECT);
180+
setFileModalOpen(true);
175181
}
176-
else{
182+
else {
177183
// TODO: It wasn't a module, so do the other thing...
178184
console.log(`Selected key that wasn't module: ${key}`);
179185
}
@@ -184,7 +190,10 @@ export function Component(props: MenuProps) {
184190
<>
185191
<FileManageModal
186192
isOpen={fileModalOpen}
187-
onCancel={() => setFileModalOpen(false)}
193+
onCancel={() => {
194+
console.log('Modal onCancel called');
195+
setFileModalOpen(false);
196+
}}
188197
project={props.project}
189198
storage={props.storage}
190199
moduleType={moduleType}
@@ -196,7 +205,7 @@ export function Component(props: MenuProps) {
196205
defaultSelectedKeys={['1']}
197206
mode="inline"
198207
items={menuItems}
199-
onSelect={handleSelect}
208+
onClick={handleClick}
200209
/>
201210
</>
202211
);

0 commit comments

Comments
 (0)