Export and share the recorded ride GPX #47
Labels
No labels
area:companion
area:docs
area:shared
area:tooling
area:watchapp
blocker
kind:chore
kind:feature
kind:spike
kind:test
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Depends on
#20 GPX ride recording including heart rate
robert/PedalPebble
Reference
robert/PedalPebble#47
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Close the loop: the ride goes back to komoot, Strava or anywhere else, without needing anyone's API.
Acceptance criteria
Files
companion/.../ride/GpxExporter.ktClosed by PR #112 (merged). Real FileProvider-based sharing (Intent.ACTION_SEND), verified against the current developer.android.com reference, correctly exported=false + grantUriPermissions, and the ${applicationId} manifest placeholder correctly reasoned against the debug variant's applicationIdSuffix. Filename generation (rideExportFilename: PedalPebble--
Ride history checked honestly before building anything -- nothing persisted what was recorded before this issue, so this is real new scope: RideRecord/RideHistoryStorage/RideHistory (pure, mirrors RouteRecordStorage/RouteLibrary's split) plus Room-backed storage and a list/share/delete screen -- :companion:ride's first Room DB and first Compose UI, kept deliberately minimal rather than a full ride-history feature.
HR/elevation unchanged and still correctly optional (#20's existing GpxRecorderTest round-trip through GpxImporter stays green and is the closest available proxy for "re-imports into komoot cleanly" -- real komoot/Strava verification still needs Robert on a device, stated honestly).
Verified for real: ./gradlew :companion:core:test -- 257 tests, 0 failures (14 new). ./gradlew :companion:assembleDebug -- real build succeeds, Room/KSP codegen ran, @OptIn(ExperimentalMaterial3Api::class) present on both new screens from the start, manifest inspected directly. No device/emulator to exercise Room's generated code against real SQLite -- same honest gap RouteDatabase already carried.