From a192e05ac711cef62e47a02172c3ffca0ceb228f Mon Sep 17 00:00:00 2001 From: violetadev Date: Sat, 21 Sep 2024 15:29:38 +0200 Subject: [PATCH] check for new version every 2 weeks --- .../components/ToolBar/Menu/index.tsx | 6 ++-- .../useCheckVersion/useCheckVersion.tsx | 33 +++++++++++++++---- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/desktop-app/src/renderer/components/ToolBar/Menu/index.tsx b/desktop-app/src/renderer/components/ToolBar/Menu/index.tsx index f2e2ac1c..ad9302ec 100644 --- a/desktop-app/src/renderer/components/ToolBar/Menu/index.tsx +++ b/desktop-app/src/renderer/components/ToolBar/Menu/index.tsx @@ -40,9 +40,9 @@ const Menu = () => {
diff --git a/desktop-app/src/renderer/components/useCheckVersion/useCheckVersion.tsx b/desktop-app/src/renderer/components/useCheckVersion/useCheckVersion.tsx index a467fb56..d864cf5e 100644 --- a/desktop-app/src/renderer/components/useCheckVersion/useCheckVersion.tsx +++ b/desktop-app/src/renderer/components/useCheckVersion/useCheckVersion.tsx @@ -1,5 +1,6 @@ import { useState, useEffect } from 'react'; import { gt } from 'semver'; +import useLocalStorage from '../useLocalStorage/useLocalStorage'; const fetchAssets = async () => { try { @@ -30,29 +31,47 @@ const useCheckVersion = () => { const [isNewVersionAvailable, setIsNewVersionAvailable] = useState< null | boolean >(null); - const [latestVersion, setLatestVersion] = useState(''); + const [latestVersion, setLatestVersion] = useLocalStorage( + 'latestVersion' + ); const [currentVersion, setCurrentVersion] = useState(''); + const [lastCheck, setLastCheck] = useLocalStorage( + 'lastCheck' + ); + const biWeeklyCheckInMs = 1209600000; useEffect(() => { const checkVersion = async () => { const currentVersionResult = await getAppVersion(); - const latestVersionResult = await fetchAssets(); setCurrentVersion(currentVersionResult); - setLatestVersion(latestVersionResult); + const now = Date.now(); + if (!latestVersion || !lastCheck || now - lastCheck > biWeeklyCheckInMs) { + const latestVersionResult = await fetchAssets(); + if (latestVersionResult) { + setLatestVersion(latestVersionResult); + setLastCheck(now); + } + } const isNewVersion = currentVersionResult && - latestVersionResult && - gt(latestVersionResult, currentVersionResult); + latestVersion && + gt(latestVersion, currentVersionResult); - setIsNewVersionAvailable(isNewVersion); + setIsNewVersionAvailable(Boolean(isNewVersion)); }; if (isNewVersionAvailable === null) { checkVersion(); } - }, [currentVersion, isNewVersionAvailable, latestVersion]); + }, [ + isNewVersionAvailable, + lastCheck, + latestVersion, + setLastCheck, + setLatestVersion, + ]); return { isNewVersionAvailable,