mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 16:00:32 +00:00
change behavior for missing shuttle/stop/ETA
This commit is contained in:
@@ -72,23 +72,28 @@ export class NotificationService {
|
|||||||
return this._lastRefreshedTimeMs && Date.now() - this._lastRefreshedTimeMs < thirtyMinutesMs;
|
return this._lastRefreshedTimeMs && Date.now() - this._lastRefreshedTimeMs < thirtyMinutesMs;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async sendEtaNotificationImmediately({ deviceId, shuttleId, stopId }: ScheduledNotificationData): Promise<boolean> {
|
private async sendEtaNotificationImmediately(notificationData: ScheduledNotificationData): Promise<boolean> {
|
||||||
|
const { deviceId, shuttleId, stopId } = notificationData;
|
||||||
this.reloadAPNsTokenIfTimePassed();
|
this.reloadAPNsTokenIfTimePassed();
|
||||||
const url = NotificationService.getAPNsFullUrlToUse(deviceId);
|
const url = NotificationService.getAPNsFullUrlToUse(deviceId);
|
||||||
|
|
||||||
const shuttle = await this.repository.getShuttleById(shuttleId);
|
const shuttle = await this.repository.getShuttleById(shuttleId);
|
||||||
const stop = await this.repository.getStopById(stopId);
|
const stop = await this.repository.getStopById(stopId);
|
||||||
const eta = await this.repository.getEtaForShuttleAndStopId(shuttleId, stopId);
|
const eta = await this.repository.getEtaForShuttleAndStopId(shuttleId, stopId);
|
||||||
// TODO: add more specific errors
|
|
||||||
if (!shuttle) {
|
if (!shuttle) {
|
||||||
throw new Error("The shuttle given by the provided shuttleID doesn't exist.");
|
console.warn(`Notification ${notificationData} fell through; no associated shuttle`);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
if (!stop) {
|
if (!stop) {
|
||||||
throw new Error("The shuttle given by the provided stopId doesn't exist.");
|
console.warn(`Notification ${notificationData} fell through; no associated stop`);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
// TODO: account for cases where ETA may not exist due to "data race" with ApiBasedRepositoryLoader
|
|
||||||
|
// Notification may not be sent if ETA is unavailable at the moment;
|
||||||
|
// this is fine because it will be sent again when ETA becomes available
|
||||||
if (!eta) {
|
if (!eta) {
|
||||||
throw new Error("There is no ETA for this shuttle/stop.");
|
console.warn(`Notification ${notificationData} fell through; no associated ETA`);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the fetch request
|
// Send the fetch request
|
||||||
|
|||||||
Reference in New Issue
Block a user