feat: ajout de la fonctionnalité de monitoring des mangas, incluant l'activation et la désactivation du suivi, la synchronisation des chapitres, et la mise à jour de l'API pour gérer ces nouvelles actions. Création de nouveaux composants Vue pour le rafraîchissement des chapitres et l'affichage des notifications. Intégration de tests unitaires pour valider le bon fonctionnement de ces fonctionnalités.
This commit is contained in:
parent
d9e78b5229
commit
00d63dffeb
@@ -142,6 +142,26 @@ export class ApiMangaRepository {
|
||||
}
|
||||
}
|
||||
|
||||
async refreshMangaChapters(mangaId) {
|
||||
try {
|
||||
const response = await fetch(`/api/manga/${mangaId}/chapters/refresh`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({})
|
||||
});
|
||||
if (!response.ok) {
|
||||
throw new Error('Failed to refresh manga chapters');
|
||||
}
|
||||
// L'endpoint retourne 202 (Accepted), pas de contenu JSON à parser
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error('API Error:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async searchChapter(chapterId) {
|
||||
try {
|
||||
const response = await fetch('/api/scraping/chapters', {
|
||||
@@ -321,4 +341,40 @@ export class ApiMangaRepository {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async toggleMonitoring(mangaId, enabled) {
|
||||
try {
|
||||
const response = await fetch(`/api/manga/${mangaId}/monitoring/toggle`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({ enabled })
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
// Tenter de récupérer le message d'erreur détaillé de l'API
|
||||
let errorMessage = 'Failed to toggle monitoring';
|
||||
try {
|
||||
const errorData = await response.json();
|
||||
if (errorData.detail) {
|
||||
errorMessage = errorData.detail;
|
||||
} else if (errorData.message) {
|
||||
errorMessage = errorData.message;
|
||||
} else if (errorData.violations && errorData.violations.length > 0) {
|
||||
errorMessage = errorData.violations.map(v => v.message).join(', ');
|
||||
}
|
||||
} catch (parseError) {
|
||||
console.warn('Could not parse error response:', parseError);
|
||||
}
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
|
||||
// L'endpoint retourne un statut 204 (No Content), donc pas de données à retourner
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error('API Error:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user