From 194370e020f31f4e792879c50677e24f9ba9d2de Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Mon, 30 May 2022 17:05:27 +0300 Subject: [PATCH] Set proper timeframes Signed-off-by: Alex Andreev --- .../app-update-warning.injectable.ts | 2 + .../app-update-warning/app-update-warning.ts | 51 +++++-------------- .../utils/session-storage.injectable.ts | 12 +++++ 3 files changed, 26 insertions(+), 39 deletions(-) create mode 100644 src/renderer/utils/session-storage.injectable.ts diff --git a/src/renderer/app-update-warning/app-update-warning.injectable.ts b/src/renderer/app-update-warning/app-update-warning.injectable.ts index 0de68c2e8f..01ada2c6db 100644 --- a/src/renderer/app-update-warning/app-update-warning.injectable.ts +++ b/src/renderer/app-update-warning/app-update-warning.injectable.ts @@ -4,6 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import ipcRendererInjectable from "../app-paths/get-value-from-registered-channel/ipc-renderer/ipc-renderer.injectable"; +import sessionStorageInjectable from "../utils/session-storage.injectable"; import { AppUpdateWarning } from "./app-update-warning"; const appUpdateWarningInjectable = getInjectable({ @@ -12,6 +13,7 @@ const appUpdateWarningInjectable = getInjectable({ instantiate: (di) => { return AppUpdateWarning.createInstance({ ipcRenderer: di.inject(ipcRendererInjectable), + sessionStorage: di.inject(sessionStorageInjectable), }); }, }); diff --git a/src/renderer/app-update-warning/app-update-warning.ts b/src/renderer/app-update-warning/app-update-warning.ts index aa479909e9..c8586a4417 100644 --- a/src/renderer/app-update-warning/app-update-warning.ts +++ b/src/renderer/app-update-warning/app-update-warning.ts @@ -9,14 +9,17 @@ import type { IpcRenderer } from "electron"; interface Dependencies { readonly ipcRenderer: IpcRenderer; + readonly sessionStorage: Storage; } +const onceADay = 1000 * 60 * 60 * 24; + export class AppUpdateWarning extends Singleton { @observable warningLevel: "high" | "medium" | "light" | "" = ""; @observable private updateAvailableDate: Date | null = this.getDateFromSessionStorage(); private interval: NodeJS.Timeout | null = null; - constructor(dependencies: Dependencies) { + constructor(private dependencies: Dependencies) { super(); makeObservable(this); @@ -29,12 +32,12 @@ export class AppUpdateWarning extends Singleton { saveDateToSessionStorage() { if (this.updateAvailableDate) { - window.sessionStorage.setItem("when-update-available", this.updateAvailableDate.toISOString()); + this.dependencies.sessionStorage.setItem("when-update-available", this.updateAvailableDate.toISOString()); } } getDateFromSessionStorage() { - const value = window.sessionStorage.getItem("when-update-available"); + const value = this.dependencies.sessionStorage.getItem("when-update-available"); if (!value) { return null; @@ -56,7 +59,7 @@ export class AppUpdateWarning extends Singleton { if (!this.interval) { this.interval = setInterval(() => { this.setWarningLevel(); - }, 1000 * 60); // Once a day + }, onceADay); } } @@ -73,61 +76,31 @@ export class AppUpdateWarning extends Singleton { const today = new Date(); const elapsedTime = today.getTime() - this.updateAvailableDate.getTime(); - const elapsedDays = elapsedTime / (1000 * 60 * 60 * 24); + const elapsedDays = elapsedTime / (onceADay); return elapsedDays; } - get minutesAfterUpdateAvailable() { - if (!this.updateAvailableDate) { - return 0; - } - - const today = new Date(); - const elapsedTime = today.getTime() - this.updateAvailableDate.getTime(); - const elapsedMinutes = Math.floor(elapsedTime / (1000 * 60)); - - return elapsedMinutes; - } - - // private setHighWarningLevel(elapsedDays: number) { - // if (elapsedDays >= 25) { - // this.warningLevel = "high"; - // } - // } - - // private setMediumWarningLevel(elapsedDays: number) { - // if (elapsedDays >= 20 && elapsedDays < 25) { - // this.warningLevel = "medium"; - // } - // } - - // private setLightWarningLevel(elapsedDays: number) { - // if (elapsedDays < 20) { - // this.warningLevel = "light"; - // } - // } - private setHighWarningLevel(elapsedDays: number) { - if (elapsedDays >= 6) { + if (elapsedDays >= 25) { this.warningLevel = "high"; } } private setMediumWarningLevel(elapsedDays: number) { - if (elapsedDays >= 2 && elapsedDays < 4) { + if (elapsedDays >= 20 && elapsedDays < 25) { this.warningLevel = "medium"; } } private setLightWarningLevel(elapsedDays: number) { - if (elapsedDays < 2) { + if (elapsedDays < 20) { this.warningLevel = "light"; } } private setWarningLevel() { - const days = this.minutesAfterUpdateAvailable; + const days = this.daysAfterUpdateAvailable; this.setHighWarningLevel(days); this.setMediumWarningLevel(days); diff --git a/src/renderer/utils/session-storage.injectable.ts b/src/renderer/utils/session-storage.injectable.ts new file mode 100644 index 0000000000..9d4580e297 --- /dev/null +++ b/src/renderer/utils/session-storage.injectable.ts @@ -0,0 +1,12 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + import { getInjectable } from "@ogre-tools/injectable"; + + const sessionStorageInjectable = getInjectable({ + id: "session-storage", + instantiate: () => window.sessionStorage, + }); + + export default sessionStorageInjectable; \ No newline at end of file