From 6b8d1e49110ba19c421d3ab267c01cc1c5b22fef Mon Sep 17 00:00:00 2001 From: Raicuparta Date: Tue, 14 Nov 2023 08:18:04 +0100 Subject: [PATCH] re-add age limit for notifications --- .../{update-database => }/helpers/dates.ts | 0 .../{update-database => }/helpers/promises.ts | 0 .../helpers/to-json-string.ts | 0 scripts/src/send-notifications/get-diff.ts | 49 ++++++++++++------- .../src/update-database/fetch-mod-manager.ts | 2 +- scripts/src/update-database/fetch-mods.ts | 20 ++++---- scripts/src/update-database/index.ts | 6 +-- .../update-database/{helpers => }/octokit.ts | 2 +- scripts/src/update-database/readmes.ts | 2 +- 9 files changed, 47 insertions(+), 34 deletions(-) rename scripts/src/{update-database => }/helpers/dates.ts (100%) rename scripts/src/{update-database => }/helpers/promises.ts (100%) rename scripts/src/{update-database => }/helpers/to-json-string.ts (100%) rename scripts/src/update-database/{helpers => }/octokit.ts (98%) diff --git a/scripts/src/update-database/helpers/dates.ts b/scripts/src/helpers/dates.ts similarity index 100% rename from scripts/src/update-database/helpers/dates.ts rename to scripts/src/helpers/dates.ts diff --git a/scripts/src/update-database/helpers/promises.ts b/scripts/src/helpers/promises.ts similarity index 100% rename from scripts/src/update-database/helpers/promises.ts rename to scripts/src/helpers/promises.ts diff --git a/scripts/src/update-database/helpers/to-json-string.ts b/scripts/src/helpers/to-json-string.ts similarity index 100% rename from scripts/src/update-database/helpers/to-json-string.ts rename to scripts/src/helpers/to-json-string.ts diff --git a/scripts/src/send-notifications/get-diff.ts b/scripts/src/send-notifications/get-diff.ts index 1e9672cbcc..0da97e8e69 100644 --- a/scripts/src/send-notifications/get-diff.ts +++ b/scripts/src/send-notifications/get-diff.ts @@ -1,4 +1,7 @@ import type { BaseMod } from "../mod.js"; +import { getDateAgeInHours } from "../helpers/dates.js"; + +const MAX_UPDATE_AGE_HOURS = 24; export type DiffItem = | { @@ -24,20 +27,25 @@ export function getDiff(previousDatabase: BaseMod[], nextDatabase: BaseMod[]) { (mod) => mod.uniqueName === nextDatabaseMod.uniqueName ); - if (!previousDatabaseMod) { - diff.push({ - diffType: "add", - nextMod: nextDatabaseMod, - }); - continue; - } + if ( + getDateAgeInHours(nextDatabaseMod.latestReleaseDate) < + MAX_UPDATE_AGE_HOURS + ) { + if (!previousDatabaseMod) { + diff.push({ + diffType: "add", + nextMod: nextDatabaseMod, + }); + continue; + } - if (previousDatabaseMod.version !== nextDatabaseMod.version) { - diff.push({ - diffType: "update", - previousMod: previousDatabaseMod, - nextMod: nextDatabaseMod, - }); + if (previousDatabaseMod.version !== nextDatabaseMod.version) { + diff.push({ + diffType: "update", + previousMod: previousDatabaseMod, + nextMod: nextDatabaseMod, + }); + } } if ( @@ -45,11 +53,16 @@ export function getDiff(previousDatabase: BaseMod[], nextDatabase: BaseMod[]) { previousDatabaseMod?.prerelease?.version !== nextDatabaseMod.prerelease.version ) { - diff.push({ - diffType: "update-prerelease", - previousMod: previousDatabaseMod, - nextMod: nextDatabaseMod, - }); + if ( + getDateAgeInHours(nextDatabaseMod.prerelease.date) < + MAX_UPDATE_AGE_HOURS + ) { + diff.push({ + diffType: "update-prerelease", + previousMod: previousDatabaseMod, + nextMod: nextDatabaseMod, + }); + } } } diff --git a/scripts/src/update-database/fetch-mod-manager.ts b/scripts/src/update-database/fetch-mod-manager.ts index d6fd537fa9..d5f4ccdc28 100644 --- a/scripts/src/update-database/fetch-mod-manager.ts +++ b/scripts/src/update-database/fetch-mod-manager.ts @@ -1,5 +1,5 @@ import { RELEASE_EXTENSION } from "../constants.js"; -import { getAllReleases, getOctokit } from "./helpers/octokit.js"; +import { getAllReleases, getOctokit } from "./octokit.js"; const MANAGER_REPO_AUTHOR = "ow-mods"; const MANAGER_REPO_NAME = "ow-mod-manager"; diff --git a/scripts/src/update-database/fetch-mods.ts b/scripts/src/update-database/fetch-mods.ts index b1f59baeeb..c3421a8c3a 100644 --- a/scripts/src/update-database/fetch-mods.ts +++ b/scripts/src/update-database/fetch-mods.ts @@ -5,9 +5,9 @@ import { getCleanedUpReleaseList, getRepoUpdatedAt, getAllReleases, -} from "./helpers/octokit.js"; -import { filterFulfilledPromiseSettleResults } from "./helpers/promises.js"; -import { getDateAgeInHours } from "./helpers/dates.js"; +} from "./octokit.js"; +import { filterFulfilledPromiseSettleResults } from "../helpers/promises.js"; +import { getDateAgeInHours } from "../helpers/dates.js"; import { getReadmeUrls } from "./readmes.js"; import { RELEASE_EXTENSION } from "../constants.js"; import { BaseMod, OutputMod } from "../mod.js"; @@ -66,12 +66,11 @@ export async function fetchMods( : {}; const repoURL = `${REPO_URL_BASE}/${modInfo.repo}`; - const repoVariations = - modInfo.repoVariations - ? modInfo.repoVariations.map( - (value: string) => `${REPO_URL_BASE}/${value}` - ) - : []; + const repoVariations = modInfo.repoVariations + ? modInfo.repoVariations.map( + (value: string) => `${REPO_URL_BASE}/${value}` + ) + : []; if (!requiresUpdate) { return { @@ -130,7 +129,8 @@ export async function fetchMods( totalDownloadCount += modInfo.downloadCountOffset; } - const firstReleaseDate = modInfo.firstReleaseDateOverride ?? + const firstReleaseDate = + modInfo.firstReleaseDateOverride ?? (releases[releases.length - 1] ?? cleanLatestRelease).date; const latestPrerelease = prereleases[0]; diff --git a/scripts/src/update-database/index.ts b/scripts/src/update-database/index.ts index 06f931f457..37424c6aa7 100644 --- a/scripts/src/update-database/index.ts +++ b/scripts/src/update-database/index.ts @@ -4,11 +4,11 @@ import path from "path"; import { fetchMods } from "./fetch-mods.js"; import { fetchModManager, type ModManagerOutput } from "./fetch-mod-manager.js"; -import { toJsonString } from "./helpers/to-json-string.js"; +import { toJsonString } from "../helpers/to-json-string.js"; import { getViewCounts } from "./analytics/get-view-counts.js"; import { getInstallCounts } from "./analytics/get-install-counts.js"; -import { getSettledResult } from "./helpers/promises.js"; -import { apiCallCount, rateLimitReached } from "./helpers/octokit.js"; +import { getSettledResult } from "../helpers/promises.js"; +import { apiCallCount, rateLimitReached } from "./octokit.js"; import { DATABASE_FILE_NAME } from "../constants.js"; import type { OutputMod } from "../mod.js"; diff --git a/scripts/src/update-database/helpers/octokit.ts b/scripts/src/update-database/octokit.ts similarity index 98% rename from scripts/src/update-database/helpers/octokit.ts rename to scripts/src/update-database/octokit.ts index a5301aa37d..3fff303315 100644 --- a/scripts/src/update-database/helpers/octokit.ts +++ b/scripts/src/update-database/octokit.ts @@ -3,7 +3,7 @@ import { type OctokitOptions } from "@octokit/core/dist-types/types.js"; import { retry } from "@octokit/plugin-retry"; import { throttling } from "@octokit/plugin-throttling"; import fetch from "node-fetch"; -import { getLatestDate } from "./dates.js"; +import { getLatestDate } from "../helpers/dates.js"; // It's useful to log the API call count, // but replacing the fetch function seems to some times cause the "premature close" error. diff --git a/scripts/src/update-database/readmes.ts b/scripts/src/update-database/readmes.ts index 7844f9a6a9..3cdbd64695 100644 --- a/scripts/src/update-database/readmes.ts +++ b/scripts/src/update-database/readmes.ts @@ -1,5 +1,5 @@ import { RequestError } from "@octokit/request-error"; -import { CreatedOctokit } from "./helpers/octokit.js"; +import { CreatedOctokit } from "./octokit.js"; import fetch from "node-fetch"; import { ModInfo } from "../mod-info.js";