mirror of
https://github.com/jeffvli/feishin.git
synced 2026-07-22 02:16:39 +02:00
30 lines
1.0 KiB
TypeScript
30 lines
1.0 KiB
TypeScript
import { useQuery } from '@tanstack/react-query';
|
|
import isElectron from 'is-electron';
|
|
import { useEffect, useState } from 'react';
|
|
|
|
const CHECK_FOR_UPDATES_INTERVAL_MS = 6 * 60 * 60 * 1000;
|
|
|
|
const utils = isElectron() ? window.api?.utils : null;
|
|
|
|
export const useCheckForUpdates = () => {
|
|
const [enablePeriodicCheck, setEnablePeriodicCheck] = useState(false);
|
|
|
|
// We want to skip the first check since it's already checked in the main process when the app is started
|
|
useEffect(() => {
|
|
const timer = setTimeout(() => setEnablePeriodicCheck(true), CHECK_FOR_UPDATES_INTERVAL_MS);
|
|
return () => clearTimeout(timer);
|
|
}, []);
|
|
|
|
const isEnabled =
|
|
enablePeriodicCheck &&
|
|
Boolean(isElectron() && utils?.checkForUpdates && !utils?.disableAutoUpdates?.());
|
|
|
|
return useQuery({
|
|
enabled: isEnabled,
|
|
queryFn: () => utils?.checkForUpdates?.(),
|
|
queryKey: ['app-check-for-updates'],
|
|
refetchInterval: CHECK_FOR_UPDATES_INTERVAL_MS,
|
|
refetchIntervalInBackground: true,
|
|
});
|
|
};
|