Fix Wahoo import crash for workouts without FIT files

Some Wahoo workouts (indoor, manual entries) don't have a FIT file URL.
Both the manual import action and webhook handler called downloadFile
unconditionally, throwing "No file URL for workout". Now skips the
download and creates the activity without GPX when no file is available.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ullrich Schäfer 2026-04-04 11:41:28 +01:00
parent c6fb7da666
commit 9aaa17c898
No known key found for this signature in database
GPG key ID: A32FF691A0F752D9
2 changed files with 11 additions and 5 deletions

View file

@ -44,10 +44,13 @@ export async function action({ params, request }: Route.ActionArgs) {
await updateTokens(connection.id, tokens);
}
// Download and convert
// Download and convert (if file available)
const workout = { id: event.workoutId, name: "", type: "", startedAt: "", duration: null, distance: null, fileUrl: event.fileUrl };
const fileBuffer = await provider.downloadFile(tokens, workout);
const gpx = await provider.convertToGpx(fileBuffer);
let gpx: string | null = null;
if (workout.fileUrl) {
const fileBuffer = await provider.downloadFile(tokens, workout);
gpx = await provider.convertToGpx(fileBuffer);
}
// Create activity
const activityId = await createActivity(connection.userId, {

View file

@ -86,8 +86,11 @@ export async function action({ params, request }: Route.ActionArgs) {
fileUrl: fileUrl || undefined,
};
const fileBuffer = await provider.downloadFile(tokens, workout);
const gpx = await provider.convertToGpx(fileBuffer);
let gpx: string | null = null;
if (workout.fileUrl) {
const fileBuffer = await provider.downloadFile(tokens, workout);
gpx = await provider.convertToGpx(fileBuffer);
}
const activityId = await createActivity(user.id, {
name: workoutName || `${provider.name} workout`,