feat: ajout de la fonctionnalité de téléchargement des volumes de manga, avec mise à jour de l'API et des composants pour gérer l'indicateur de chargement et le téléchargement des fichiers.

This commit is contained in:
ext.jeremy.guillot@maxicoffee.domains
2025-06-29 23:35:22 +02:00
parent 17f9feea7b
commit d23c82631e
4 changed files with 119 additions and 7 deletions

View File

@@ -243,4 +243,44 @@ export class ApiMangaRepository {
throw error;
}
}
async downloadVolume(mangaId, volumeNumber) {
try {
const response = await fetch(`/api/mangas/${mangaId}/volumes/${volumeNumber}/download`);
if (!response.ok) {
throw new Error('Failed to download volume');
}
// Récupérer le nom du fichier depuis les headers
const contentDisposition = response.headers.get('Content-Disposition');
let filename = `volume-${volumeNumber}.zip`;
if (contentDisposition) {
const filenameMatch = contentDisposition.match(/filename="?(.+)"?/);
if (filenameMatch) {
filename = filenameMatch[1];
}
}
// Créer un blob à partir de la réponse
const blob = await response.blob();
// Créer un lien de téléchargement temporaire
const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = filename;
document.body.appendChild(link);
link.click();
// Nettoyer
document.body.removeChild(link);
window.URL.revokeObjectURL(url);
return true;
} catch (error) {
console.error('API Error:', error);
throw error;
}
}
}