From f77069396fd53cabf6cd37350e86a467389cd98f Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Mon, 13 Nov 2023 16:48:45 -0500 Subject: [PATCH 1/2] fix(OtpUserController): Retrieve push devices before returning user info request. --- .../middleware/controllers/api/OtpUserController.java | 6 +++++- .../middleware/tripmonitor/jobs/CheckMonitoredTrip.java | 7 ++----- .../middleware/utils/NotificationUtils.java | 9 +++++++++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/opentripplanner/middleware/controllers/api/OtpUserController.java b/src/main/java/org/opentripplanner/middleware/controllers/api/OtpUserController.java index 6bb536f8f..5d29fdccf 100644 --- a/src/main/java/org/opentripplanner/middleware/controllers/api/OtpUserController.java +++ b/src/main/java/org/opentripplanner/middleware/controllers/api/OtpUserController.java @@ -80,7 +80,11 @@ protected void buildEndpoint(ApiEndpoint baseEndpoint) { @Override protected OtpUser getUserProfile(RequestingUser profile) { - return profile.otpUser; + OtpUser otpUser = profile.otpUser; + if (otpUser != null) { + NotificationUtils.updatePushDevices(otpUser); + } + return otpUser; } /** diff --git a/src/main/java/org/opentripplanner/middleware/tripmonitor/jobs/CheckMonitoredTrip.java b/src/main/java/org/opentripplanner/middleware/tripmonitor/jobs/CheckMonitoredTrip.java index 76e225f1d..1287be92f 100644 --- a/src/main/java/org/opentripplanner/middleware/tripmonitor/jobs/CheckMonitoredTrip.java +++ b/src/main/java/org/opentripplanner/middleware/tripmonitor/jobs/CheckMonitoredTrip.java @@ -410,11 +410,8 @@ private void sendNotifications() { return; } // Update push notification devices count, which may change asynchronously - int numPushDevices = NotificationUtils.getPushInfo(otpUser.email); - if (numPushDevices != otpUser.pushDevices) { - otpUser.pushDevices = numPushDevices; - Persistence.otpUsers.replace(otpUser.id, otpUser); - } + NotificationUtils.updatePushDevices(otpUser); + if (notifications.size() == 0) { // FIXME: Change log level LOG.info("No notifications queued for trip. Skipping notify."); diff --git a/src/main/java/org/opentripplanner/middleware/utils/NotificationUtils.java b/src/main/java/org/opentripplanner/middleware/utils/NotificationUtils.java index 12ecb24f9..ac11a43b5 100644 --- a/src/main/java/org/opentripplanner/middleware/utils/NotificationUtils.java +++ b/src/main/java/org/opentripplanner/middleware/utils/NotificationUtils.java @@ -14,6 +14,7 @@ import org.opentripplanner.middleware.bugsnag.BugsnagReporter; import org.opentripplanner.middleware.models.AdminUser; import org.opentripplanner.middleware.models.OtpUser; +import org.opentripplanner.middleware.persistence.Persistence; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -324,6 +325,14 @@ public static int getPushInfo(String toUser) { return 0; } + public static void updatePushDevices(OtpUser otpUser) { + int numPushDevices = getPushInfo(otpUser.email); + if (numPushDevices != otpUser.pushDevices) { + otpUser.pushDevices = numPushDevices; + Persistence.otpUsers.replace(otpUser.id, otpUser); + } + } + static class NotificationInfo { public String user; public String message; From c7b05affa1b28e4efc68f502f4feded6fc9596aa Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Wed, 15 Nov 2023 09:55:15 -0500 Subject: [PATCH 2/2] docs(NotificationUtils): Add JavaDoc to method updatePushDevices. --- .../opentripplanner/middleware/utils/NotificationUtils.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/org/opentripplanner/middleware/utils/NotificationUtils.java b/src/main/java/org/opentripplanner/middleware/utils/NotificationUtils.java index ac11a43b5..3ba4164f3 100644 --- a/src/main/java/org/opentripplanner/middleware/utils/NotificationUtils.java +++ b/src/main/java/org/opentripplanner/middleware/utils/NotificationUtils.java @@ -325,6 +325,11 @@ public static int getPushInfo(String toUser) { return 0; } + /** + * Poll the push middleware for the number of devices registered to receive push notifications + * for the specified user, and update the corresponding field in memory and Mongo. + * @param otpUser The {@link OtpUser} for which to check and update push devices. + */ public static void updatePushDevices(OtpUser otpUser) { int numPushDevices = getPushInfo(otpUser.email); if (numPushDevices != otpUser.pushDevices) {