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) || ''