better code: less coupling
Massimo Melina committed
Dec 16, 2023 at 23:05 UTC
af1dfa740be057152e35286f7bab4a3fd5ed7f93
2 files changed
+7
-9
frontend/src/useFetchList.ts
+5
-7
@@ -43,7 +43,6 @@ export default function useFetchList() {
43
lastReloader.current = snap.listReloader
44
45
state.list = []
46
- state.filteredList = undefined
46
state.selected = {}
47
state.loading = true
48
state.error = undefined
@@ -52,10 +51,8 @@ export default function useFetchList() {
51
const buffer: DirList = []
52
const flush = () => {
53
const chunk = buffer.splice(0, Infinity)
55
- if (chunk.length) {
54
+ if (chunk.length)
55
state.list = sort([...state.list, ...chunk])
57
- updateFilteredList()
58
- }
56
}
57
const timer = setInterval(flush, 1000)
58
const src = apiEvents('get_file_list', params, (type, data) => {
@@ -149,11 +146,12 @@ const sortAgain = _.debounce(()=> state.list = sort(state.list), 100)
146
for (const k of [ 'sort_by', 'invert_order', 'folders_first', 'sort_numerics'] as const)
147
subscribeKey(state, k, sortAgain)
148
152
-subscribeKey(state, 'patternFilter', updateFilteredList)
153
-function updateFilteredList() {
149
+const updateFilteredList = _.debounce(() => {
150
const v = state.patternFilter
151
if (!v)
152
return state.filteredList = undefined
153
const filter = new RegExp(_.escapeRegExp(v),'i')
154
state.filteredList = state.list.filter(x => filter.test(x.n))
159
-}
\ No newline at end of file
155
+})
156
+subscribeKey(state, 'list', updateFilteredList)
157
+subscribeKey(state, 'patternFilter', updateFilteredList)
src/serveFile.ts
+2
-2
@@ -9,7 +9,7 @@ import mimetypes from 'mime-types'
9
import { defineConfig } from './config'
10
import { Dict, makeMatcher, matches } from './misc'
11
import _ from 'lodash'
12
-import path from 'path'
12
+import { basename } from 'path'
13
import { promisify } from 'util'
14
import { updateConnection } from './connections'
15
@@ -47,7 +47,7 @@ const mimeCfg = defineConfig<Dict<string>, (name: string) => string | undefined>
47
export async function serveFile(ctx: Koa.Context, source:string, mime?:string, content?: string | Buffer) {
48
if (!source)
49
return
50
- const fn = path.basename(source)
50
+ const fn = basename(source)
51
mime = mime ?? mimeCfg.compiled()(fn)
52
if (mime === MIME_AUTO)
53
mime = mimetypes.lookup(source) || ''