@@ -141,16 +141,22 @@ const addFilesOnTree = async (files, currentCode, selectedFolder) => {
141
141
// Select the folder to insert based on file extension. If is a js file,
142
142
// insert on "cloud" folder, else insert on "public" folder. This logic is
143
143
// a legacy from the old Cloud Code page
144
- folder = obj . children . find ( f => f === selectedFolder ) ;
144
+ folder = obj . children [ selectedFolder ]
145
145
}
146
146
await verifyFileNames ( folder , newTreeNodes [ j ] ) ;
147
- const position = 'inside' ;
148
- const parent = $ ( '#tree' ) . jstree ( 'get_selected' ) ;
149
- $ ( '#tree' ) . jstree ( "create_node" , parent , { data : newTreeNodes [ j ] . data , type : 'new-file' , text : newTreeNodes [ j ] . text . name } , position , false , false ) ;
147
+ addFileOnSelectedNode ( newTreeNodes [ j ] . text . name ) ;
150
148
}
151
149
return currentCode ;
152
150
}
153
151
152
+ const addFileOnSelectedNode = ( name , data = { code : 'data:plain/text;base64,IA==' } ) => {
153
+ let parent = $ ( '#tree' ) . jstree ( 'get_selected' ) ;
154
+ if ( [ 'default' , 'file' , 'new-file' ] . includes ( $ ( '#tree' ) . jstree ( ) . get_node ( parent ) . type ) ) {
155
+ parent = $ ( '#tree' ) . jstree ( ) . get_node ( parent ) . parent ;
156
+ }
157
+ $ ( '#tree' ) . jstree ( "create_node" , parent , { data, type : 'new-file' , text : name } , 'inside' , false , false ) ;
158
+ }
159
+
154
160
// Configure the menu that is shown on right-click based on files type
155
161
const customMenu = node => {
156
162
let items = $ . jstree . defaults . contextmenu . items ( ) ;
@@ -250,5 +256,6 @@ export default {
250
256
encodeFile,
251
257
updateTreeContent,
252
258
getExtension,
253
- refreshEmptyFolderIcons
259
+ refreshEmptyFolderIcons,
260
+ addFileOnSelectedNode
254
261
}
0 commit comments