From 843fd11774531a4fd22456093b112506cbffbc18 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Thu, 27 Aug 2026 22:30:35 +0200 Subject: Add Strava external link to ride detail --- web/views.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'web/views.go') diff --git a/web/views.go b/web/views.go index 9a79906..ddea27e 100644 --- a/web/views.go +++ b/web/views.go @@ -75,6 +75,7 @@ type RideDetailView struct { RouteError string ActionError string Notice string + ExternalURL string } type RideMapPass struct { @@ -295,8 +296,9 @@ func buildRideDetailView(item ride.StoredRide, parsed ride.Ride, passes []mounta } profile := buildRideProfile(parsed, passes, officialClimbs, matchPolicy) return RideDetailView{ - RideView: buildRideView(item), - Passes: buildRideMapPasses(passes), + RideView: buildRideView(item), + Passes: buildRideMapPasses(passes), + ExternalURL: externalRideURL(item.ExternalID), Route: GeoJSONFeatureCollection{ Type: "FeatureCollection", Features: []GeoJSONFeature{{ @@ -312,6 +314,17 @@ func buildRideDetailView(item ride.StoredRide, parsed ride.Ride, passes []mounta } } +func externalRideURL(externalID string) string { + const prefix = "strava:" + if len(externalID) > len(prefix) && externalID[:len(prefix)] == prefix { + id := externalID[len(prefix):] + if id != "" { + return "https://www.strava.com/activities/" + id + } + } + return "" +} + func buildRideMapPasses(passes []mountain_pass.MountainPass) []RideMapPass { mapPasses := make([]RideMapPass, 0, len(passes)) for _, mountainPass := range passes { -- cgit v1.3