From 92433ec618d8a45ff74cf0acffe67b30e1bed134 Mon Sep 17 00:00:00 2001 From: Christian Beutel <> Date: Sun, 16 Mar 2025 18:39:48 +0100 Subject: [PATCH] fixes thumbnail bug --- db/main.go | 20 +++++++++++--------- db/util/meilisearch.go | 6 +++++- web/src/routes/trail/edit/[id]/+page.svelte | 3 ++- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/db/main.go b/db/main.go index bc303d97..9a00d0b5 100644 --- a/db/main.go +++ b/db/main.go @@ -60,10 +60,10 @@ func setupEventHandlers(app *pocketbase.PocketBase, client meilisearch.ServiceMa app.OnModelAfterCreate("users").Add(createUserHandler(app, client)) app.OnModelAfterCreate("trails").Add(createTrailIndexHandler(app, client)) + app.OnModelAfterUpdate("trails").Add(updateTrailIndexHandler(app, client)) + app.OnModelAfterDelete("trails").Add(deleteTrailIndexHandler(client)) app.OnRecordAfterCreateRequest("trails").Add(createTrailHandler(app)) - app.OnRecordAfterUpdateRequest("trails").Add(updateTrailHandler(app, client)) - app.OnRecordAfterDeleteRequest("trails").Add(deleteTrailHandler(client)) app.OnRecordAfterCreateRequest("trail_share").Add(createTrailShareHandler(app, client)) app.OnRecordAfterDeleteRequest("trail_share").Add(deleteTrailShareHandler(client)) @@ -160,19 +160,21 @@ func createTrailHandler(app *pocketbase.PocketBase) func(e *core.RecordCreateEve } } -func updateTrailHandler(app *pocketbase.PocketBase, client meilisearch.ServiceManager) func(e *core.RecordUpdateEvent) error { - return func(e *core.RecordUpdateEvent) error { - author, err := app.Dao().FindRecordById("users", e.Record.GetString(("author"))) +func updateTrailIndexHandler(app *pocketbase.PocketBase, client meilisearch.ServiceManager) func(e *core.ModelEvent) error { + return func(e *core.ModelEvent) error { + record := e.Model.(*models.Record) + author, err := app.Dao().FindRecordById("users", record.GetString(("author"))) if err != nil { return err } - return util.UpdateTrail(e.Record, author, client) + return util.UpdateTrail(record, author, client) } } -func deleteTrailHandler(client meilisearch.ServiceManager) func(e *core.RecordDeleteEvent) error { - return func(e *core.RecordDeleteEvent) error { - _, err := client.Index("trails").DeleteDocument(e.Record.Id) +func deleteTrailIndexHandler(client meilisearch.ServiceManager) func(e *core.ModelEvent) error { + return func(e *core.ModelEvent) error { + record := e.Model.(*models.Record) + _, err := client.Index("trails").DeleteDocument(record.Id) return err } } diff --git a/db/util/meilisearch.go b/db/util/meilisearch.go index 678d2c6a..cd0b81e3 100644 --- a/db/util/meilisearch.go +++ b/db/util/meilisearch.go @@ -12,7 +12,11 @@ func documentFromTrailRecord(r *models.Record, author *models.Record, includeSha photos := r.GetStringSlice("photos") thumbnail := "" if len(photos) > 0 { - thumbnail = r.GetStringSlice("photos")[r.GetInt("thumbnail")] + thumbnailIndex := r.GetInt("thumbnail") + if thumbnailIndex >= len(photos) { + thumbnailIndex = 0 + } + thumbnail = photos[thumbnailIndex] } document := map[string]interface{}{ diff --git a/web/src/routes/trail/edit/[id]/+page.svelte b/web/src/routes/trail/edit/[id]/+page.svelte index 79641ce9..20708bad 100644 --- a/web/src/routes/trail/edit/[id]/+page.svelte +++ b/web/src/routes/trail/edit/[id]/+page.svelte @@ -202,7 +202,8 @@ ); setFields(updatedTrail); } - + photoFiles = [] + savedAtLeastOnce = true; show_toast({ type: "success",