@@ -9,7 +9,7 @@ import B4ACloudCodeView from 'components/B4ACloudCodeView/B4ACloudCo
9
9
import B4ATreeActions from 'components/B4ACodeTree/B4ATreeActions' ;
10
10
import Swal from 'sweetalert2' ;
11
11
import B4AAlert from 'components/B4AAlert/B4AAlert.react' ;
12
-
12
+ import CloudCodeChanges from 'lib/CloudCodeChanges' ;
13
13
import 'jstree/dist/themes/default/style.css'
14
14
import 'components/B4ACodeTree/B4AJsTree.css'
15
15
@@ -40,9 +40,10 @@ export default class B4ACodeTree extends React.Component {
40
40
isImage : false ,
41
41
selectedFolder : 0 ,
42
42
isFolderSelected : true ,
43
- updatedFiles : [ ] ,
44
43
selectedNodeData : null
45
44
}
45
+
46
+ this . cloudCodeChanges = new CloudCodeChanges ( ) ;
46
47
}
47
48
48
49
getFileType ( file ) {
@@ -65,20 +66,6 @@ export default class B4ACodeTree extends React.Component {
65
66
this . loadFile ( )
66
67
}
67
68
68
- syncNewFileContent ( tree , file ) {
69
- return tree . map ( ( node ) => {
70
- if ( node . type === 'folder' || node . type === 'new-folder' ) {
71
- node . children = this . syncNewFileContent ( node . children , file ) ;
72
- }
73
- else if ( file && node . data ?. code !== file ?. base64 [ 0 ]
74
- && node . text == file . fileList [ 0 ] . name ) {
75
- node . data . code = file . base64 [ 0 ] ;
76
- }
77
-
78
- return node ;
79
- } ) ;
80
- }
81
-
82
69
// load file and add on tree
83
70
async loadFile ( ) {
84
71
let file = this . state . newFile ;
@@ -88,14 +75,10 @@ export default class B4ACodeTree extends React.Component {
88
75
if ( overwrite === true ) {
89
76
this . setState ( { newFile : '' , filesOnTree : file } ) ;
90
77
this . handleTreeChanges ( )
91
- const updatedFiles = this . syncNewFileContent ( this . state . files , file ) ;
92
- this . props . setCurrentCode ( updatedFiles ) ;
93
78
}
94
79
}
95
80
}
96
81
97
-
98
-
99
82
deleteFile ( ) {
100
83
if ( this . state . nodeId ) {
101
84
B4ATreeActions . remove ( `#${ this . state . nodeId } ` , true ) ;
@@ -133,8 +116,6 @@ export default class B4ACodeTree extends React.Component {
133
116
selectedFile = selected . text ;
134
117
nodeId = selected . id
135
118
extension = B4ATreeActions . getExtension ( selectedFile )
136
- const fileUpdated = this . state . updatedFiles . find ( f => f . file === this . state . selectedFile ) ;
137
- source = fileUpdated ? fileUpdated . updatedContent : source ;
138
119
this . setState ( { source, selectedFile, nodeId, extension, isImage } )
139
120
}
140
121
fr . readAsText ( selectedFile ) ;
@@ -163,8 +144,6 @@ export default class B4ACodeTree extends React.Component {
163
144
}
164
145
}
165
146
}
166
- const fileUpdated = this . state . updatedFiles . find ( f => f . file === this . state . selectedFile ) ;
167
- source = fileUpdated ? fileUpdated . updatedContent : source ;
168
147
this . setState ( { source, selectedFile, nodeId, extension, isImage, selectedFolder, isFolderSelected : selected . type == 'folder' || selected . type == 'new-folder' } )
169
148
}
170
149
@@ -181,37 +160,29 @@ export default class B4ACodeTree extends React.Component {
181
160
return this . props . parentState ( { unsavedChanges : true } )
182
161
}
183
162
184
- getUpdatedFiles ( files , value ) {
185
- return files . map ( ( file ) => {
186
- if ( file . type === 'folder' || file . type === 'new-folder' ) {
187
- file . children = this . getUpdatedFiles ( file . children , value ) ;
188
- }
189
- else if ( this . state . selectedFile === file . text && file . data ) {
190
- file . data . code = value ;
191
- }
192
- // children.
193
- return file ;
194
- } ) ;
195
- }
196
-
197
163
async updateSelectedFileContent ( value ) {
198
- const updatedData = { file : this . state . selectedFile , updatedContent : value } ;
199
164
const ecodedValue = await B4ATreeActions . encodeFile ( value , 'data:plain/text;base64' ) ;
200
- let updatedFiles = this . getUpdatedFiles (
201
- this . state . files ,
202
- ecodedValue
203
- ) ;
204
- this . setState ( { updatedFiles : [ ...this . state . updatedFiles . filter ( f => f . file !== this . state . selectedFile ) , updatedData ] , files : updatedFiles , source : value } ) ;
205
- this . props . setCurrentCode ( updatedFiles ) ;
165
+ this . setState ( { source : value } ) ;
206
166
207
167
this . props . setCodeUpdated ( true ) ;
208
168
this . state . selectedNodeData ?. instance . set_icon ( this . state . selectedNodeData . node , require ( './icons/file.png' ) . default ) ;
169
+
170
+ $ ( '#tree' ) . jstree ( 'get_selected' , true ) . pop ( ) . data . code = ecodedValue ;
171
+ $ ( '#tree' ) . jstree ( ) . redraw ( true ) ;
172
+
173
+ // set updated files.
174
+ this . cloudCodeChanges . addFile ( $ ( '#tree' ) . jstree ( 'get_selected' , true ) . pop ( ) . text ) ;
175
+ this . props . setUpdatedFile ( this . cloudCodeChanges . getFiles ( ) ) ;
209
176
}
210
177
211
178
updateCodeOnNewFile ( type ) {
212
179
if ( type === 'new-file' ) {
213
180
this . props . setCodeUpdated ( true ) ;
214
181
}
182
+
183
+ // set updated files.
184
+ this . cloudCodeChanges . addFile ( $ ( '#tree' ) . jstree ( 'get_selected' , true ) . pop ( ) . text ) ;
185
+ this . props . setUpdatedFile ( this . cloudCodeChanges . getFiles ( ) ) ;
215
186
}
216
187
217
188
componentDidMount ( ) {
@@ -229,9 +200,6 @@ export default class B4ACodeTree extends React.Component {
229
200
$ ( '#tree' ) . on ( 'rename_node.jstree' , ( node , parent ) => this . updateCodeOnNewFile ( parent ?. node ?. type ) ) ;
230
201
$ ( '#tree' ) . on ( 'delete_node.jstree' , ( node , parent ) => this . updateCodeOnNewFile ( parent ?. node ?. type ) ) ;
231
202
232
- // current code.
233
- this . props . setCurrentCode ( this . state . files ) ;
234
-
235
203
}
236
204
237
205
render ( ) {
0 commit comments