File size: 1,767 Bytes
bbb1195 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | import { useEffect, useRef } from 'react';
import { useConfigStore } from '../../stores/useConfigStore';
import { useAccountStore } from '../../stores/useAccountStore';
function BackgroundTaskRunner() {
const { config } = useConfigStore();
const { refreshAllQuotas } = useAccountStore();
// Use refs to track previous state to detect "off -> on" transitions
const prevAutoRefreshRef = useRef(false);
// Auto Refresh Quota Effect
useEffect(() => {
if (!config) return;
let intervalId: ReturnType<typeof setTimeout> | null = null;
const { auto_refresh, refresh_interval } = config;
// Check if we just turned it on
if (auto_refresh && !prevAutoRefreshRef.current) {
console.log('[BackgroundTask] Auto-refresh enabled, executing immediately...');
refreshAllQuotas();
}
prevAutoRefreshRef.current = auto_refresh;
if (auto_refresh && refresh_interval > 0) {
console.log(`[BackgroundTask] Starting auto-refresh quota timer: ${refresh_interval} mins`);
intervalId = setInterval(() => {
console.log('[BackgroundTask] Auto-refreshing all quotas...');
refreshAllQuotas();
}, refresh_interval * 60 * 1000);
}
return () => {
if (intervalId) {
console.log('[BackgroundTask] Clearing auto-refresh timer');
clearInterval(intervalId);
}
};
}, [config?.auto_refresh, config?.refresh_interval, refreshAllQuotas]);
// Note: Auto-sync from DB is not supported in cloud version
// The syncAccountFromDb feature has been removed
// Render nothing
return null;
}
export default BackgroundTaskRunner;
|