@@ -265,16 +265,21 @@ export class FSCore {
265265
266266 public expandAndWait ( node : FSContainerNode ) {
267267 return new Promise ( resolve => {
268- this . addLoadEvent ( node , node => {
268+ if ( node . loaded ) {
269+ this . expand ( node ) ;
269270 resolve ( null ) ;
270- return true ;
271- } ) ;
272- this . expand ( node ) ;
271+ } else {
272+ this . addLoadEvent ( node , node => {
273+ resolve ( null ) ;
274+ return true ;
275+ } ) ;
276+ this . expand ( node ) ;
277+ }
273278 } )
274279 }
275280
276281 public async ensureExpanded ( node : FSContainerNode ) {
277- if ( ! node . expanded && ! node . loaded ) {
282+ if ( ! node . expanded ) {
278283 await this . expandAndWait ( node ) ;
279284 }
280285 }
@@ -438,7 +443,7 @@ export class FSCore {
438443 if ( FSItem . isCollection ( result ) ) {
439444 const collection = result ;
440445 // refresh collections
441- let collectionsOld = node . children . filter ( child => FSNode . isCollection ( child ) ) as FSCollectionNode [ ] ;
446+ let collectionsOld = node . children . filter ( child => FSNode . isCollection ( child ) && ! child . isNew ) as FSCollectionNode [ ] ;
442447 const collectionsNew = collection . collections . filter ( subCollection => {
443448 const collectionNode = this . getNode ( this . itemID ( node . connectionNode . connection , subCollection ) ) ;
444449 if ( FSNode . isCollection ( collectionNode ) && collectionNode . parent === node ) {
@@ -451,7 +456,7 @@ export class FSCore {
451456 collectionsOld . forEach ( node => this . removeNode ( node ) ) ;
452457 collectionsNew . forEach ( collection => this . addCollection ( node , collection ) ) ;
453458 // refresh documents
454- let documentsOld = node . children . filter ( child => FSNode . isDocument ( child ) ) as FSDocumentNode [ ] ;
459+ let documentsOld = node . children . filter ( child => FSNode . isDocument ( child ) && ! child . isNew ) as FSDocumentNode [ ] ;
455460 const documentsNew = collection . documents . filter ( subDocument => {
456461 const documentNode = this . getNode ( this . itemID ( node . connectionNode . connection , subDocument ) ) ;
457462 if ( FSNode . isDocument ( documentNode ) && documentNode . parent === node ) {
0 commit comments