1964ea5fb4
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.
27 lines
1003 B
TypeScript
27 lines
1003 B
TypeScript
import type { ShareBrowseResult, ShareSearchResult, ShareStatus } from './dto/share'
|
|
|
|
export function useShareService() {
|
|
const api = useApi()
|
|
const config = useRuntimeConfig()
|
|
|
|
async function browse(path: string): Promise<ShareBrowseResult> {
|
|
const query = path ? `?path=${encodeURIComponent(path)}` : ''
|
|
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')
|
|
}
|
|
|
|
function getDownloadUrl(path: string, disposition: 'inline' | 'attachment' = 'inline'): string {
|
|
const base = config.public.apiBase || '/api'
|
|
return `${base}/share/download?path=${encodeURIComponent(path)}&disposition=${disposition}`
|
|
}
|
|
|
|
return { browse, search, getStatus, getDownloadUrl }
|
|
}
|