@@ -17,15 +17,17 @@ export default class Scanner<L1 extends TItemLocation, L2 extends TItemLocation>
1717 private mergeable : ( i1 : TItem < TItemLocation > , i2 : TItem < TItemLocation > ) => boolean
1818 private preserveOrder : boolean
1919 private checkHashes : boolean
20+ private hasCache : boolean
2021
2122 private result : ScanResult < L2 , L1 >
2223
23- constructor ( oldTree :TItem < L1 > , newTree :TItem < L2 > , mergeable :( i1 :TItem < TItemLocation > , i2 :TItem < TItemLocation > ) => boolean , preserveOrder :boolean , checkHashes = true ) {
24+ constructor ( oldTree :TItem < L1 > , newTree :TItem < L2 > , mergeable :( i1 :TItem < TItemLocation > , i2 :TItem < TItemLocation > ) => boolean , preserveOrder :boolean , checkHashes = true , hasCache = true ) {
2425 this . oldTree = oldTree
2526 this . newTree = newTree
2627 this . mergeable = mergeable
2728 this . preserveOrder = preserveOrder
2829 this . checkHashes = typeof checkHashes === 'undefined' ? true : checkHashes
30+ this . hasCache = hasCache
2931 this . result = {
3032 CREATE : new Diff ( ) ,
3133 UPDATE : new Diff ( ) ,
@@ -159,7 +161,9 @@ export default class Scanner<L1 extends TItemLocation, L2 extends TItemLocation>
159161 await Promise . resolve ( )
160162 const removedItem = removeAction . payload
161163
162- if ( this . mergeable ( removedItem , createdItem ) && ( removedItem . type !== 'folder' || removedItem . childrenSimilarity ( createdItem ) > 0.8 ) ) {
164+ if ( this . mergeable ( removedItem , createdItem ) &&
165+ ( removedItem . type !== 'folder' ||
166+ ( ! this . hasCache && removedItem . childrenSimilarity ( createdItem ) > 0.8 ) ) ) {
163167 this . result . CREATE . retract ( createAction )
164168 this . result . REMOVE . retract ( removeAction )
165169 this . result . MOVE . commit ( {
0 commit comments