feat: suppression images + gestion tags (ajout/suppression)
Backend:
- ImagoClient::delete_image() — DELETE /api/v1/images/{id}
- ImagoClient::update_tags() — PUT /api/v1/images/{id}/tags
- Route DELETE /api/images/{id}
- Route PUT /api/images/{id}/tags
Frontend:
- Bouton 🗑️ sur chaque carte (visible au hover)
- Boîte de confirmation avant suppression
- Tags cliquables avec × pour suppression
- Bouton + tag pour ajouter un tag (Enter pour valider)
- Bouton Supprimer + tags éditables dans la modale
- Suppression + modif tags aussi dans la modale
⚠️ Nécessite redéploiement Imago pour le endpoint PUT /tags
This commit is contained in:
@@ -311,4 +311,27 @@ impl ImagoClient {
|
||||
let data = response.bytes().await?.to_vec();
|
||||
Ok((data, content_type))
|
||||
}
|
||||
|
||||
/// Supprime une image (nécessite le scope images:delete)
|
||||
pub async fn delete_image(&self, id: i64) -> Result<()> {
|
||||
self.client
|
||||
.delete(format!("{}/{}", self.images_base(), id))
|
||||
.header("X-API-Key", &self.api_key)
|
||||
.send()
|
||||
.await?
|
||||
.error_for_status()?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Met à jour les tags d'une image
|
||||
pub async fn update_tags(&self, id: i64, tags: Vec<String>) -> Result<()> {
|
||||
self.client
|
||||
.put(format!("{}/{}/tags", self.images_base(), id))
|
||||
.header("X-API-Key", &self.api_key)
|
||||
.json(&serde_json::json!({"tags": tags}))
|
||||
.send()
|
||||
.await?
|
||||
.error_for_status()?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user