mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 07:50:31 +00:00
move shouldSendNotifications property to the AppleNotificationSender
This commit is contained in:
@@ -8,6 +8,7 @@ import { TimedApiBasedRepositoryLoader } from "./loaders/TimedApiBasedRepository
|
|||||||
import { ETANotificationScheduler } from "./notifications/schedulers/ETANotificationScheduler";
|
import { ETANotificationScheduler } from "./notifications/schedulers/ETANotificationScheduler";
|
||||||
import { configDotenv } from "dotenv";
|
import { configDotenv } from "dotenv";
|
||||||
import { loadTestData } from "./loaders/loadTestData";
|
import { loadTestData } from "./loaders/loadTestData";
|
||||||
|
import { AppleNotificationSender } from "./notifications/senders/AppleNotificationSender";
|
||||||
|
|
||||||
configDotenv();
|
configDotenv();
|
||||||
|
|
||||||
@@ -24,7 +25,8 @@ async function main() {
|
|||||||
let notificationService: ETANotificationScheduler;
|
let notificationService: ETANotificationScheduler;
|
||||||
if (process.argv.length > 2 && process.argv[2] == "integration-testing") {
|
if (process.argv.length > 2 && process.argv[2] == "integration-testing") {
|
||||||
await loadTestData(repository);
|
await loadTestData(repository);
|
||||||
notificationService = new ETANotificationScheduler(repository, false);
|
const appleNotificationSender = new AppleNotificationSender(false);
|
||||||
|
notificationService = new ETANotificationScheduler(repository, appleNotificationSender);
|
||||||
} else {
|
} else {
|
||||||
const repositoryDataUpdater = new TimedApiBasedRepositoryLoader(
|
const repositoryDataUpdater = new TimedApiBasedRepositoryLoader(
|
||||||
repository
|
repository
|
||||||
@@ -32,7 +34,6 @@ async function main() {
|
|||||||
await repositoryDataUpdater.start();
|
await repositoryDataUpdater.start();
|
||||||
notificationService = new ETANotificationScheduler(repository);
|
notificationService = new ETANotificationScheduler(repository);
|
||||||
}
|
}
|
||||||
notificationService.reloadAPNsTokenIfTimePassed();
|
|
||||||
|
|
||||||
const { url } = await startStandaloneServer(server, {
|
const { url } = await startStandaloneServer(server, {
|
||||||
listen: {
|
listen: {
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
import { GetterRepository } from "../../repositories/GetterRepository";
|
import { GetterRepository } from "../../repositories/GetterRepository";
|
||||||
import jwt from "jsonwebtoken";
|
|
||||||
import fs from "fs";
|
|
||||||
import { TupleKey } from "../../types/TupleKey";
|
import { TupleKey } from "../../types/TupleKey";
|
||||||
import { IEta } from "../../entities/entities";
|
import { IEta } from "../../entities/entities";
|
||||||
import http2 from "http2";
|
|
||||||
import { AppleNotificationSender, NotificationAlertArguments } from "../senders/AppleNotificationSender";
|
import { AppleNotificationSender, NotificationAlertArguments } from "../senders/AppleNotificationSender";
|
||||||
|
|
||||||
export interface ScheduledNotificationData {
|
export interface ScheduledNotificationData {
|
||||||
@@ -16,7 +13,6 @@ export class ETANotificationScheduler {
|
|||||||
public readonly secondsThresholdForNotificationToFire = 180;
|
public readonly secondsThresholdForNotificationToFire = 180;
|
||||||
|
|
||||||
constructor(private repository: GetterRepository,
|
constructor(private repository: GetterRepository,
|
||||||
private shouldActuallySendNotifications = true,
|
|
||||||
private appleNotificationSender = new AppleNotificationSender()
|
private appleNotificationSender = new AppleNotificationSender()
|
||||||
) {
|
) {
|
||||||
this.etaSubscriberCallback = this.etaSubscriberCallback.bind(this);
|
this.etaSubscriberCallback = this.etaSubscriberCallback.bind(this);
|
||||||
@@ -35,10 +31,6 @@ export class ETANotificationScheduler {
|
|||||||
private deviceIdsToDeliverTo: { [key: string]: Set<string> } = {}
|
private deviceIdsToDeliverTo: { [key: string]: Set<string> } = {}
|
||||||
|
|
||||||
private async sendEtaNotificationImmediately(notificationData: ScheduledNotificationData): Promise<boolean> {
|
private async sendEtaNotificationImmediately(notificationData: ScheduledNotificationData): Promise<boolean> {
|
||||||
if (!this.shouldActuallySendNotifications) {
|
|
||||||
return true; // pretend that the notification sent
|
|
||||||
}
|
|
||||||
|
|
||||||
const { deviceId, shuttleId, stopId } = notificationData;
|
const { deviceId, shuttleId, stopId } = notificationData;
|
||||||
|
|
||||||
const shuttle = await this.repository.getShuttleById(shuttleId);
|
const shuttle = await this.repository.getShuttleById(shuttleId);
|
||||||
|
|||||||
@@ -16,6 +16,9 @@ export class AppleNotificationSender {
|
|||||||
private apnsToken: string | undefined = undefined;
|
private apnsToken: string | undefined = undefined;
|
||||||
private _lastRefreshedTimeMs: number | undefined = undefined;
|
private _lastRefreshedTimeMs: number | undefined = undefined;
|
||||||
|
|
||||||
|
constructor(private shouldActuallySendNotifications = true) {
|
||||||
|
}
|
||||||
|
|
||||||
get lastRefreshedTimeMs(): number | undefined {
|
get lastRefreshedTimeMs(): number | undefined {
|
||||||
return this._lastRefreshedTimeMs;
|
return this._lastRefreshedTimeMs;
|
||||||
}
|
}
|
||||||
@@ -64,6 +67,11 @@ export class AppleNotificationSender {
|
|||||||
* notification was sent successfully.
|
* notification was sent successfully.
|
||||||
*/
|
*/
|
||||||
public async sendNotificationImmediately(deviceId: string, notificationAlertArguments: NotificationAlertArguments) {
|
public async sendNotificationImmediately(deviceId: string, notificationAlertArguments: NotificationAlertArguments) {
|
||||||
|
if (!this.shouldActuallySendNotifications) {
|
||||||
|
// pretend that the notification sent
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
this.reloadAPNsTokenIfTimePassed();
|
this.reloadAPNsTokenIfTimePassed();
|
||||||
|
|
||||||
const bundleId = process.env.APNS_BUNDLE_ID;
|
const bundleId = process.env.APNS_BUNDLE_ID;
|
||||||
|
|||||||
Reference in New Issue
Block a user