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 }
}
