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:
parent
17f9feea7b
commit
d23c82631e
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user