feat(share) : recherche globale récursive par nom de fichier dans le partage SMB

Endpoint GET /api/share/search?q= parcourant tout le partage en largeur
(garde-fous 200 résultats / 2000 dossiers). Le champ de l'explorateur
déclenche une recherche globale debouncée dès 2 caractères (filtre local
en deçà), avec affichage du dossier parent de chaque résultat.
This commit is contained in:
Matthieu
2026-06-12 15:49:57 +02:00
parent 682b5747b1
commit 1964ea5fb4
8 changed files with 267 additions and 18 deletions
+5
View File
@@ -18,6 +18,11 @@ export type ShareBrowseResult = {
entries: FileEntry[]
}
export type ShareSearchResult = {
query: string
entries: FileEntry[]
}
export type ShareStatus = {
enabled: boolean
}
+6 -2
View File
@@ -1,4 +1,4 @@
import type { ShareBrowseResult, ShareStatus } from './dto/share'
import type { ShareBrowseResult, ShareSearchResult, ShareStatus } from './dto/share'
export function useShareService() {
const api = useApi()
@@ -9,6 +9,10 @@ export function useShareService() {
return api.get<ShareBrowseResult>(`/share/browse${query}`)
}
async function search(query: string): Promise<ShareSearchResult> {
return api.get<ShareSearchResult>(`/share/search?q=${encodeURIComponent(query)}`)
}
async function getStatus(): Promise<ShareStatus> {
return api.get<ShareStatus>('/share/status')
}
@@ -18,5 +22,5 @@ export function useShareService() {
return `${base}/share/download?path=${encodeURIComponent(path)}&disposition=${disposition}`
}
return { browse, getStatus, getDownloadUrl }
return { browse, search, getStatus, getDownloadUrl }
}