@@ -45,15 +45,37 @@ type FileManageModalProps = {
4545export 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 ,
0 commit comments