feat: sync file search

This commit is contained in:
EnixCoda 2019-08-11 12:26:38 +08:00
parent 0e9125b667
commit dca997dcff
No known key found for this signature in database
GPG key ID: 0C1A07377913A1DD

View file

@ -32,8 +32,6 @@ export type TreeNode = {
accessDenied?: boolean
}
const SEARCH_DELAY = 250
function getFilterFunc(keyRegex: RegExp) {
return function filterFunc({ name }: TreeNode) {
return keyRegex.test(name)
@ -73,20 +71,6 @@ function search(treeNodes: TreeNode[], searchKey: string): TreeNode[] {
return filterDuplications(searchResults)
}
function debounce<T, Args extends any[]>(
func: (...args: Args) => T,
delay: number,
): (...args: Args) => Promise<T> {
let timer: number
return (...args) =>
new Promise(resolve => {
window.clearTimeout(timer)
timer = window.setTimeout(() => resolve(func(...args)), delay)
})
}
export const debouncedSearch = debounce(search, SEARCH_DELAY)
function getNodes(root: TreeNode, nodes: TreeNode[] = []) {
if (root.contents) {
root.contents.forEach(node => {
@ -141,7 +125,7 @@ class L2 {
search = async (searchKey: string) => {
this.compressed = !searchKey
this.searchedNodes = searchKey
? await debouncedSearch(this.l1.nodes, searchKey)
? search(this.l1.nodes, searchKey)
: this.getRoot().contents || []
}