From 5f85417c80c13fdebfb1079b50694d4f9c4a5db1 Mon Sep 17 00:00:00 2001 From: Niklas Date: Mon, 13 Apr 2026 14:20:04 +0200 Subject: [PATCH] Don't display "null" as activity location in UI when reverse geocoding didn't took place (#3) * Fix display of "null" for activity location (backend) * Fix display of "null" for activity location (frontend) --------- Co-authored-by: Niklas Deutschmann --- .../java/net/javahippie/fitpub/model/dto/ActivityDTO.java | 6 +++--- .../javahippie/fitpub/model/dto/TimelineActivityDTO.java | 2 +- .../java/net/javahippie/fitpub/model/entity/Activity.java | 4 ++++ .../net/javahippie/fitpub/service/TimelineResultMapper.java | 2 +- src/main/resources/static/js/timeline.js | 2 +- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/javahippie/fitpub/model/dto/ActivityDTO.java b/src/main/java/net/javahippie/fitpub/model/dto/ActivityDTO.java index 5c910c0..fec9730 100644 --- a/src/main/java/net/javahippie/fitpub/model/dto/ActivityDTO.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/ActivityDTO.java @@ -133,7 +133,7 @@ public class ActivityDTO { .elevationLoss(activity.getElevationLoss()) .createdAt(activity.getCreatedAt()) .updatedAt(activity.getUpdatedAt()) - .activityLocation(activity.getActivityLocation()); + .activityLocation(activity.getActivityLocationNonNull()); if (activity.getTotalDurationSeconds() != null) { builder.totalDurationSeconds(activity.getTotalDurationSeconds()); @@ -246,7 +246,7 @@ public class ActivityDTO { .subSport(activity.getSubSport()) .indoorDetectionMethod(activity.getIndoorDetectionMethod()) .race(activity.getRace() != null ? activity.getRace() : false) - .activityLocation(activity.getActivityLocation()) + .activityLocation(activity.getActivityLocationNonNull()) .build(); } @@ -266,7 +266,7 @@ public class ActivityDTO { .elevationLoss(activity.getElevationLoss()) .createdAt(activity.getCreatedAt()) .updatedAt(activity.getUpdatedAt()) - .activityLocation(activity.getActivityLocation()); + .activityLocation(activity.getActivityLocationNonNull()); if (activity.getTotalDurationSeconds() != null) { builder.totalDurationSeconds(activity.getTotalDurationSeconds()); diff --git a/src/main/java/net/javahippie/fitpub/model/dto/TimelineActivityDTO.java b/src/main/java/net/javahippie/fitpub/model/dto/TimelineActivityDTO.java index 85d3a65..d398ae6 100644 --- a/src/main/java/net/javahippie/fitpub/model/dto/TimelineActivityDTO.java +++ b/src/main/java/net/javahippie/fitpub/model/dto/TimelineActivityDTO.java @@ -104,7 +104,7 @@ public class TimelineActivityDTO { .indoorDetectionMethod(activity.getIndoorDetectionMethod()) .race(activity.getRace() != null ? activity.getRace() : false) .metrics(activity.getMetrics() != null ? ActivityMetricsSummary.fromMetrics(activity.getMetrics()) : null) - .activityLocation(activity.getActivityLocation()) + .activityLocation(activity.getActivityLocationNonNull()) .build(); } diff --git a/src/main/java/net/javahippie/fitpub/model/entity/Activity.java b/src/main/java/net/javahippie/fitpub/model/entity/Activity.java index 73160dd..045bd7a 100644 --- a/src/main/java/net/javahippie/fitpub/model/entity/Activity.java +++ b/src/main/java/net/javahippie/fitpub/model/entity/Activity.java @@ -214,6 +214,10 @@ public class Activity { } } + public String getActivityLocationNonNull() { + return activityLocation != null ? activityLocation : ""; + } + /** * Activity types supported by the platform */ diff --git a/src/main/java/net/javahippie/fitpub/service/TimelineResultMapper.java b/src/main/java/net/javahippie/fitpub/service/TimelineResultMapper.java index 5fb0d8b..4146668 100644 --- a/src/main/java/net/javahippie/fitpub/service/TimelineResultMapper.java +++ b/src/main/java/net/javahippie/fitpub/service/TimelineResultMapper.java @@ -98,7 +98,7 @@ public class TimelineResultMapper { .commentsCount(commentsCount) .likedByCurrentUser(likedByCurrentUser) .hasGpsTrack(true) // Will be refined based on actual data - .activityLocation(activityLocation) + .activityLocation(activityLocation != null ? activityLocation : "") .build(); } catch (Exception e) { diff --git a/src/main/resources/static/js/timeline.js b/src/main/resources/static/js/timeline.js index fae5434..1b48bdc 100644 --- a/src/main/resources/static/js/timeline.js +++ b/src/main/resources/static/js/timeline.js @@ -209,7 +209,7 @@ const FitPubTimeline = { @${this.escapeHtml(activity.username)} ${!activity.isLocal ? ' Remote' : ''} - • ${this.formatTimeAgo(activity.startedAt)} • ${activity.activityLocation} + • ${this.formatTimeAgo(activity.startedAt)} ${activity.activityLocation ? '•' : ''} ${activity.activityLocation}