Add logo and rename
This commit is contained in:
@ -87,38 +87,45 @@ func (h *Handler) handleFavorites(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
// handleGetFavorites retourne la liste des favoris (HTML)
|
||||
func (h *Handler) handleGetFavorites(w http.ResponseWriter, r *http.Request) {
|
||||
// Pas de redirection ici car cet endpoint est utilisé par HTMX ET par fetch()
|
||||
// depuis le JavaScript pour mettre à jour la liste après ajout/suppression
|
||||
h.renderFavoritesList(w)
|
||||
}
|
||||
|
||||
// renderFavoritesList rend le template des favoris (méthode interne)
|
||||
func (h *Handler) renderFavoritesList(w http.ResponseWriter) {
|
||||
favorites, err := h.loadFavorites()
|
||||
if err != nil {
|
||||
h.logger.Printf("Erreur chargement favoris: %v", err)
|
||||
// En cas d'erreur, retourner une liste vide plutôt qu'une erreur 500
|
||||
favorites = &FavoritesData{Items: []Favorite{}}
|
||||
}
|
||||
|
||||
|
||||
// Enrichir avec les informations des fichiers
|
||||
enrichedFavorites := []map[string]interface{}{}
|
||||
|
||||
|
||||
for _, fav := range favorites.Items {
|
||||
absPath := filepath.Join(h.notesDir, fav.Path)
|
||||
|
||||
|
||||
// Vérifier si le fichier/dossier existe toujours
|
||||
if _, err := os.Stat(absPath); os.IsNotExist(err) {
|
||||
continue // Skip les favoris qui n'existent plus
|
||||
}
|
||||
|
||||
|
||||
item := map[string]interface{}{
|
||||
"Path": fav.Path,
|
||||
"IsDir": fav.IsDir,
|
||||
"Title": fav.Title,
|
||||
"Icon": getIcon(fav.IsDir, fav.Path),
|
||||
}
|
||||
|
||||
|
||||
enrichedFavorites = append(enrichedFavorites, item)
|
||||
}
|
||||
|
||||
|
||||
data := map[string]interface{}{
|
||||
"Favorites": enrichedFavorites,
|
||||
}
|
||||
|
||||
|
||||
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
||||
if err := h.templates.ExecuteTemplate(w, "favorites.html", data); err != nil {
|
||||
h.logger.Printf("Erreur template favoris: %v", err)
|
||||
@ -192,24 +199,34 @@ func (h *Handler) handleAddFavorite(w http.ResponseWriter, r *http.Request) {
|
||||
http.Error(w, "Erreur de sauvegarde", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
// Retourner la liste mise à jour
|
||||
h.handleGetFavorites(w, r)
|
||||
h.renderFavoritesList(w)
|
||||
}
|
||||
|
||||
// handleRemoveFavorite retire un élément des favoris
|
||||
func (h *Handler) handleRemoveFavorite(w http.ResponseWriter, r *http.Request) {
|
||||
if err := r.ParseForm(); err != nil {
|
||||
// Pour DELETE, il faut lire le body manuellement
|
||||
body, _ := io.ReadAll(r.Body)
|
||||
r.Body.Close()
|
||||
values, _ := url.ParseQuery(string(body))
|
||||
r.Form = values
|
||||
// Pour DELETE, il faut toujours lire le body manuellement
|
||||
// car ParseForm() ne lit pas le body pour les méthodes DELETE
|
||||
body, err := io.ReadAll(r.Body)
|
||||
if err != nil {
|
||||
h.logger.Printf("Erreur lecture body: %v", err)
|
||||
http.Error(w, "Erreur lecture requête", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
path := r.FormValue("path")
|
||||
|
||||
r.Body.Close()
|
||||
|
||||
values, err := url.ParseQuery(string(body))
|
||||
if err != nil {
|
||||
h.logger.Printf("Erreur parsing query: %v", err)
|
||||
http.Error(w, "Erreur parsing requête", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
path := values.Get("path")
|
||||
|
||||
if path == "" {
|
||||
h.logger.Printf("Chemin requis manquant dans la requête")
|
||||
http.Error(w, "Chemin requis", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
@ -243,15 +260,15 @@ func (h *Handler) handleRemoveFavorite(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
favorites.Items = newItems
|
||||
|
||||
|
||||
if err := h.saveFavorites(favorites); err != nil {
|
||||
h.logger.Printf("Erreur sauvegarde favoris: %v", err)
|
||||
http.Error(w, "Erreur de sauvegarde", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
// Retourner la liste mise à jour
|
||||
h.handleGetFavorites(w, r)
|
||||
h.renderFavoritesList(w)
|
||||
}
|
||||
|
||||
// handleReorderFavorites réorganise l'ordre des favoris
|
||||
|
||||
Reference in New Issue
Block a user