From f2396ae574b36b84a17d4eeb807f3ce89756f732 Mon Sep 17 00:00:00 2001 From: slothful-vassal <89943360+slothful-vassal@users.noreply.github.com> Date: Sun, 1 Mar 2026 18:18:09 +0100 Subject: [PATCH] new trail view options: create copy & change visibility (#571) * change visibility of multiple trails in trails view (multi-select) * error handling * create copy option added * wait for meilisearch when updating trail * remove toggles from dropdown * change public/private logic * adds loading spinner for bulk operations * fixes trail duplicate * fixes tags delete on visiblility change * fix conflict resolving issue * edit labels & german translation --------- Co-authored-by: Christian Beutel <> Co-authored-by: Flomp --- db/util/meilisearch.go | 14 +- web/src/lib/components/base/dropdown.svelte | 7 +- .../components/trail/trail_dropdown.svelte | 222 +++++++++++++++--- .../lib/components/trail/trail_list.svelte | 3 +- web/src/lib/i18n/locales/de.json | 7 +- web/src/lib/i18n/locales/en.json | 6 + web/src/lib/i18n/locales/es.json | 7 + web/src/lib/i18n/locales/eu.json | 5 + web/src/lib/i18n/locales/fr.json | 6 + web/src/lib/i18n/locales/hu.json | 5 + web/src/lib/i18n/locales/it.json | 5 + web/src/lib/i18n/locales/nl.json | 5 + web/src/lib/i18n/locales/pl.json | 5 + web/src/lib/i18n/locales/pt.json | 5 + web/src/lib/i18n/locales/ru.json | 5 + web/src/lib/i18n/locales/zh.json | 5 + web/src/lib/models/trail.ts | 37 ++- web/src/lib/stores/trail_store.ts | 4 +- web/src/routes/trail/edit/[id]/+page.svelte | 1 + web/src/routes/trail/edit/[id]/+page.ts | 11 +- web/src/routes/trails/+page.svelte | 24 +- 21 files changed, 335 insertions(+), 54 deletions(-) diff --git a/db/util/meilisearch.go b/db/util/meilisearch.go index 20fa1286..f59840d2 100644 --- a/db/util/meilisearch.go +++ b/db/util/meilisearch.go @@ -346,11 +346,11 @@ func IndexTrails(app core.App, trails []*core.Record, client meilisearch.Service func UpdateTrail(app core.App, r *core.Record, author *core.Record, client meilisearch.ServiceManager) error { errs := app.ExpandRecord(r, []string{"tags"}, nil) if len(errs) > 0 { - return fmt.Errorf("failed to expand tags: %v", errs) + return fmt.Errorf("meilisearch update trail: failed to expand tags: %v", errs) } errs = app.ExpandRecord(r, []string{"category"}, nil) if len(errs) > 0 { - return fmt.Errorf("failed to expand category: %v", errs) + return fmt.Errorf("meilisearch update trail: failed to expand category: %v", errs) } doc, err := documentFromTrailRecord(app, r, author, false) @@ -359,10 +359,18 @@ func UpdateTrail(app core.App, r *core.Record, author *core.Record, client meili } documents := []map[string]interface{}{doc} - if _, err := client.Index("trails").UpdateDocuments(documents); err != nil { + task, err := client.Index("trails").UpdateDocuments(documents) + + if err != nil { return err } + interval := 500 * time.Millisecond + _, err = client.WaitForTask(task.TaskUID, interval) + if err != nil { + return fmt.Errorf("meilisearch update trail: error waiting for task completion: %v", err) + } + return nil } diff --git a/web/src/lib/components/base/dropdown.svelte b/web/src/lib/components/base/dropdown.svelte index b424bcf3..4da1d3f1 100644 --- a/web/src/lib/components/base/dropdown.svelte +++ b/web/src/lib/components/base/dropdown.svelte @@ -24,7 +24,7 @@ let dropdownElement: HTMLUListElement | undefined = $state(); let dropdownToggleElement: HTMLDivElement; - export async function toggleMenu(e: MouseEvent) { + export async function toggleMenu(e: MouseEvent) { e.stopPropagation(); e.preventDefault(); @@ -81,7 +81,10 @@ isOpen = false; } - function handleItemClick(e: MouseEvent, item: { text: string; value: any }) { + function handleItemClick( + e: MouseEvent, + item: { text: string; value: any }, + ) { e.preventDefault(); e.stopPropagation(); onchange?.(item); diff --git a/web/src/lib/components/trail/trail_dropdown.svelte b/web/src/lib/components/trail/trail_dropdown.svelte index d6e81b88..cb878423 100644 --- a/web/src/lib/components/trail/trail_dropdown.svelte +++ b/web/src/lib/components/trail/trail_dropdown.svelte @@ -1,28 +1,29 @@