import { ref } from 'vue' import { api } from '@/api/client' import type { UploadedFile } from '@/types/status' import { useToasts } from '@/composables/useToasts' /** Ile plików pokazuje kafelek na pulpicie - reszta czeka w oknie modalnym. */ export const DASHBOARD_FILE_LIMIT = 10 const files = ref([]) const uploading = ref(false) const uploadLabel = ref('') /** Serwerowa baza plików współdzielona przez kafelek i okno z pełną listą. */ export function useUploads() { const { notify, run } = useToasts() async function refresh() { try { files.value = (await api.uploads()).files } catch (error) { console.error('Błąd pobierania plików:', error) } } async function upload(selected: FileList) { uploading.value = true for (const file of Array.from(selected)) { uploadLabel.value = `Przesyłanie: ${file.name}...` await run(() => api.upload(file), `Przesłano plik: ${file.name}`, `Błąd przesyłania ${file.name}`) } uploading.value = false uploadLabel.value = '' await refresh() } async function remove(filename: string) { if (await run(() => api.deleteUpload(filename), 'Usunięto plik z serwera', 'Nie udało się usunąć pliku')) { await refresh() } } async function enqueue(filename: string) { await run(() => api.playFile(filename), '', 'Błąd odtwarzania') await refresh() } return { files, uploading, uploadLabel, refresh, upload, remove, enqueue, notify } }