chore: add prettier formatting
All checks were successful
CI / Lint, typecheck and build (push) Successful in 9m56s
All checks were successful
CI / Lint, typecheck and build (push) Successful in 9m56s
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
import { NextResponse } from "next/server";
|
||||
import { fetchMeteoWarnings } from "@/lib/server-warnings";
|
||||
import { getPushSubscriptions, hasSentWarning, markWarningSent, pruneSentWarnings, removePushSubscription } from "@/lib/push-store";
|
||||
import {
|
||||
getPushSubscriptions,
|
||||
hasSentWarning,
|
||||
markWarningSent,
|
||||
pruneSentWarnings,
|
||||
removePushSubscription,
|
||||
} from "@/lib/push-store";
|
||||
import { isWebPushConfigured, sendWarningNotification } from "@/lib/push-service";
|
||||
import { warningMatchesCounty } from "@/lib/warning-regions";
|
||||
import type { WeatherWarning } from "@/types/imgw";
|
||||
@@ -40,8 +46,12 @@ export async function GET(request: Request) {
|
||||
|
||||
try {
|
||||
const now = Date.now();
|
||||
const warnings = (await fetchMeteoWarnings(AbortSignal.timeout(12_000))).filter((warning) => isRelevantWarning(warning, now));
|
||||
const subscriptions = getPushSubscriptions().filter((subscription) => subscription.region === "PL" && subscription.enabled && subscription.province);
|
||||
const warnings = (await fetchMeteoWarnings(AbortSignal.timeout(12_000))).filter((warning) =>
|
||||
isRelevantWarning(warning, now),
|
||||
);
|
||||
const subscriptions = getPushSubscriptions().filter(
|
||||
(subscription) => subscription.region === "PL" && subscription.enabled && subscription.province,
|
||||
);
|
||||
const activeWarningIds = new Set(warnings.map((warning) => warning.id));
|
||||
let sent = 0;
|
||||
let skipped = 0;
|
||||
@@ -50,9 +60,11 @@ export async function GET(request: Request) {
|
||||
pruneSentWarnings(activeWarningIds);
|
||||
|
||||
for (const subscription of subscriptions) {
|
||||
const matchingWarnings = warnings.filter((warning) => (
|
||||
subscription.countyTeryt ? warningMatchesCounty(warning, subscription.countyTeryt) : subscription.province !== null && warning.provinces.includes(subscription.province)
|
||||
));
|
||||
const matchingWarnings = warnings.filter((warning) =>
|
||||
subscription.countyTeryt
|
||||
? warningMatchesCounty(warning, subscription.countyTeryt)
|
||||
: subscription.province !== null && warning.provinces.includes(subscription.province),
|
||||
);
|
||||
for (const warning of matchingWarnings) {
|
||||
if (hasSentWarning(subscription.endpoint, warning.id)) {
|
||||
skipped += 1;
|
||||
@@ -65,7 +77,8 @@ export async function GET(request: Request) {
|
||||
sent += 1;
|
||||
} catch (error) {
|
||||
failed += 1;
|
||||
const statusCode = typeof error === "object" && error !== null && "statusCode" in error ? Number(error.statusCode) : null;
|
||||
const statusCode =
|
||||
typeof error === "object" && error !== null && "statusCode" in error ? Number(error.statusCode) : null;
|
||||
if (statusCode === 404 || statusCode === 410) removePushSubscription(subscription.endpoint);
|
||||
}
|
||||
}
|
||||
@@ -80,9 +93,12 @@ export async function GET(request: Request) {
|
||||
failed,
|
||||
});
|
||||
} catch (error) {
|
||||
return NextResponse.json({
|
||||
error: "Unable to check IMGW meteorological warnings.",
|
||||
details: getErrorMessage(error),
|
||||
}, { status: 502 });
|
||||
return NextResponse.json(
|
||||
{
|
||||
error: "Unable to check IMGW meteorological warnings.",
|
||||
details: getErrorMessage(error),
|
||||
},
|
||||
{ status: 502 },
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user