From 105b1a0e741bd3a97b45f16f89aa7cb45fb77355 Mon Sep 17 00:00:00 2001 From: marc Date: Sat, 29 Aug 2026 14:21:55 +0200 Subject: [PATCH] fix(trash): Vorschaubilder auch im Papierkorb ausliefern MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GetThumbnail schlug die Datei mit is_deleted = false nach – im Papierkorb also 404, und dort stand für jedes Bild nur ein graues Quadrat. Man entschied über "endgültig löschen", ohne zu sehen, was es war. Schlägt der erste Griff fehl, wird jetzt im Papierkorb nachgesehen. Das Vorschaubild überlebt das weiche Löschen ohnehin: Entfernt wird es erst beim endgültigen Löschen, und der GC zählt es bis dahin als benutzt. Geprüft gegen die laufende Instanz: Bild hochladen, löschen, Vorschaubild abrufen -> 200, image/jpeg, 64x64. Co-Authored-By: Claude Opus 5 --- backend/internal/files/handler.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/backend/internal/files/handler.go b/backend/internal/files/handler.go index 68d41ba..6af695b 100644 --- a/backend/internal/files/handler.go +++ b/backend/internal/files/handler.go @@ -715,6 +715,13 @@ func (h *Handler) GetThumbnail(w http.ResponseWriter, r *http.Request) { return } f, err := h.store.GetFile(r.Context(), id, owner.OwnerID) + if errors.Is(err, ErrNotFound) { + // Auch aus dem Papierkorb ausliefern. Das Vorschaubild überlebt das + // weiche Löschen (entfernt wird es erst beim endgültigen), und ohne + // diesen zweiten Griff stünde dort nur ein graues Quadrat – man + // entschiede über „endgültig löschen", ohne zu sehen, was es war. + f, err = h.store.GetTrashedFile(r.Context(), id, owner.OwnerID) + } if errors.Is(err, ErrNotFound) { response.Error(w, http.StatusNotFound, "file not found") return