improve: subtree resolver batch handling (via #5193)
* fix: prevent subtree paths from being queued more than once in a batch * fix: clear subtree resolver errors by current path * drop `List` import
This commit is contained in:
@@ -184,8 +184,11 @@ const debResolveSubtrees = debounce(async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
if(errSelectors.allErrors().size) {
|
if(errSelectors.allErrors().size) {
|
||||||
errActions.clear({
|
errActions.clearBy(err => {
|
||||||
type: "thrown"
|
// keep if...
|
||||||
|
return err.get("type") !== "thrown" // it's not a thrown error
|
||||||
|
|| err.get("source") !== "resolver" // it's not a resolver error
|
||||||
|
|| !err.get("fullPath").every((key, i) => key === path[i] || path[i] === undefined) // it's not within the path we're resolving
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,6 +228,16 @@ const debResolveSubtrees = debounce(async () => {
|
|||||||
}, 35)
|
}, 35)
|
||||||
|
|
||||||
export const requestResolvedSubtree = path => system => {
|
export const requestResolvedSubtree = path => system => {
|
||||||
|
// poor-man's array comparison
|
||||||
|
// if this ever inadequate, this should be rewritten to use Im.List
|
||||||
|
const isPathAlreadyBatched = requestBatch
|
||||||
|
.map(arr => arr.join("@@"))
|
||||||
|
.indexOf(path.join("@@")) > -1
|
||||||
|
|
||||||
|
if(isPathAlreadyBatched) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
requestBatch.push(path)
|
requestBatch.push(path)
|
||||||
requestBatch.system = system
|
requestBatch.system = system
|
||||||
debResolveSubtrees()
|
debResolveSubtrees()
|
||||||
|
|||||||
Reference in New Issue
Block a user