Skip to content

Commit 05d4d4f

Browse files
Fixed activity polylines generation
1 parent 0b2afab commit 05d4d4f

File tree

3 files changed

+20
-14
lines changed

3 files changed

+20
-14
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export async function updateActivityPolylines(database: D1Database, id: string, polylines: string): Promise<void> {
2+
await database.prepare("UPDATE activities SET polylines = ? WHERE id = ?").bind(polylines, id).run();
3+
};

src/index.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import { FeatureFlags, VersionFeatureFlags } from "./models/FeatureFlags";
1212
import { updateActivityAreas } from "./controllers/activities/updateActivityAreas";
1313
import { getActivitySummaryCount } from "./controllers/activities/summary/getActivitySummaryCount";
1414
import { updateActivityStatus } from "./controllers/activities/updateActivityStatus";
15+
import { encode } from "@googlemaps/polyline-codec";
16+
import { updateActivityPolylines } from "./controllers/activities/updateActivityPolylines";
1517

1618
const router = createRouter();
1719

@@ -202,12 +204,25 @@ export class ActivityDurableObject {
202204
const speedSum = speeds.reduce((a, b) => a + b, 0);
203205
const averageSpeed = (speedSum / speeds.length) || 0;
204206

207+
const polylines = [];
208+
209+
for(let session of sessions) {
210+
const path = [];
211+
212+
for(let location of session.locations) {
213+
path.push([ location.coords.latitude, location.coords.longitude ]);
214+
}
215+
216+
polylines.push(encode(path, 5));
217+
}
218+
205219
await Promise.all([
206220
createActivitySummary(this.env.DATABASE, activity.id, "distance", distance),
207221
createActivitySummary(this.env.DATABASE, activity.id, "average_speed", averageSpeed),
208222
createActivitySummary(this.env.DATABASE, activity.id, "elevation", elevation),
209223
createActivitySummary(this.env.DATABASE, activity.id, "max_speed", maxSpeed),
210-
updateActivityAreas(this.env.DATABASE, activity.id, startArea, finishArea)
224+
updateActivityAreas(this.env.DATABASE, activity.id, startArea, finishArea),
225+
updateActivityPolylines(this.env.DATABASE, activity.id, JSON.stringify(polylines))
211226
]);
212227

213228
await updatePersonalBestActivitySummary(this.env.DATABASE, activity.user);

src/routes/activities/create.ts

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,7 @@ export async function handleCreateActivityRequest(request: RequestWithKey, env:
8888
if(bikeId && bike?.user !== request.key.user)
8989
return Response.json({ success: false });
9090

91-
const polylines = [];
92-
93-
for(let session of sessions) {
94-
const path = [];
95-
96-
for(let location of session.locations) {
97-
path.push([ location.coords.latitude, location.coords.longitude ]);
98-
}
99-
100-
polylines.push(encode(path, 5));
101-
}
102-
103-
const activity = await createActivity(env.DATABASE, request.key.user, title ?? null, description ?? null, bikeId ?? null, JSON.stringify(polylines));
91+
const activity = await createActivity(env.DATABASE, request.key.user, title ?? null, description ?? null, bikeId ?? null, null);
10492

10593
if(!activity)
10694
return Response.json({ success: false });

0 commit comments

Comments
 (0)