From a2ad4a48008497688d6d24cc57c0e1ff143214a1 Mon Sep 17 00:00:00 2001 From: Christian Beutel <> Date: Fri, 14 Feb 2025 13:21:25 +0100 Subject: [PATCH] komoot planned vs completed --- db/integrations/komoot/komoot.go | 11 +++++++---- db/integrations/komoot/models.go | 8 +++++--- db/main.go | 5 ++++- .../integrations/komoot_settings_modal.svelte | 15 +++++++++++++-- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/db/integrations/komoot/komoot.go b/db/integrations/komoot/komoot.go index 671715e6..80c4f5cd 100644 --- a/db/integrations/komoot/komoot.go +++ b/db/integrations/komoot/komoot.go @@ -36,7 +36,10 @@ func SyncKomoot(app *pocketbase.PocketBase) error { userId := i.GetString("user") komootString := i.GetString("komoot") - var komootIntegration KomootIntegration + komootIntegration := KomootIntegration{ + Planned: true, + Completed: true, + } json.Unmarshal([]byte(komootString), &komootIntegration) if !komootIntegration.Active || komootIntegration.Email == "" || komootIntegration.Password == "" { @@ -67,7 +70,7 @@ func SyncKomoot(app *pocketbase.PocketBase) error { break } - hasNewTours, err = syncTrailWithTours(app, k, userId, tours) + hasNewTours, err = syncTrailWithTours(app, k, komootIntegration, userId, tours) if err != nil { warning := fmt.Sprintf("error syncing komoot tours with trails: %v\n", err) fmt.Print(warning) @@ -172,14 +175,14 @@ func (k *KomootApi) fetchDetailedTour(tour KomootTour) (*DetailedKomootTour, err return data, nil } -func syncTrailWithTours(app *pocketbase.PocketBase, k *KomootApi, user string, tours []KomootTour) (bool, error) { +func syncTrailWithTours(app *pocketbase.PocketBase, k *KomootApi, i KomootIntegration, user string, tours []KomootTour) (bool, error) { hasNewTours := false for _, tour := range tours { trails, err := app.Dao().FindRecordsByFilter("trails", "external_id = {:id}", "", 1, 0, dbx.Params{"id": strconv.Itoa(int(tour.ID))}) if err != nil { return hasNewTours, err } - if len(trails) != 0 { + if len(trails) != 0 || (tour.Type == "tour_planned" && !i.Planned) || (tour.Type == "tour_recorded" && !i.Completed) { continue } hasNewTours = true diff --git a/db/integrations/komoot/models.go b/db/integrations/komoot/models.go index 3d62d41c..45b6ffa6 100644 --- a/db/integrations/komoot/models.go +++ b/db/integrations/komoot/models.go @@ -3,9 +3,11 @@ package komoot import "time" type KomootIntegration struct { - Active bool `json:"active"` - Email string `json:"email"` - Password string `json:"password"` + Active bool `json:"active"` + Email string `json:"email"` + Password string `json:"password"` + Planned bool `json:"planned"` + Completed bool `json:"completed"` } type LoginResponse struct { diff --git a/db/main.go b/db/main.go index fb4eaa4b..bc303d97 100644 --- a/db/main.go +++ b/db/main.go @@ -735,7 +735,10 @@ func bootstrapMeilisearchTrails(app *pocketbase.PocketBase, client meilisearch.S return err } - client.Index("trails").DeleteAllDocuments() + _, err := client.Index("trails").DeleteAllDocuments() + if err != nil { + return err + } for _, trail := range trails { author, err := app.Dao().FindRecordById("users", trail.GetString(("author"))) if err != nil { diff --git a/web/src/lib/components/settings/integrations/komoot_settings_modal.svelte b/web/src/lib/components/settings/integrations/komoot_settings_modal.svelte index 89bda836..5736aa86 100644 --- a/web/src/lib/components/settings/integrations/komoot_settings_modal.svelte +++ b/web/src/lib/components/settings/integrations/komoot_settings_modal.svelte @@ -1,6 +1,7 @@