CoolFace
Apppublic

legends810/testingnew

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
useUpdateCheck.ts59 linesDownload Raw Back to hooks
1import { useState, useEffect } from 'react';2import { checkForUpdates, acknowledgeUpdate } from '~/lib/api/updates';3 4const LAST_ACKNOWLEDGED_VERSION_KEY = 'bolt_last_acknowledged_version';5 6export const useUpdateCheck = () => {7  const [hasUpdate, setHasUpdate] = useState(false);8  const [currentVersion, setCurrentVersion] = useState<string>('');9  const [lastAcknowledgedVersion, setLastAcknowledgedVersion] = useState<string | null>(() => {10    try {11      return localStorage.getItem(LAST_ACKNOWLEDGED_VERSION_KEY);12    } catch {13      return null;14    }15  });16 17  useEffect(() => {18    const checkUpdate = async () => {19      try {20        const { available, version } = await checkForUpdates();21        setCurrentVersion(version);22 23        // Only show update if it's a new version and hasn't been acknowledged24        setHasUpdate(available && version !== lastAcknowledgedVersion);25      } catch (error) {26        console.error('Failed to check for updates:', error);27      }28    };29 30    // Check immediately and then every 30 minutes31    checkUpdate();32 33    const interval = setInterval(checkUpdate, 30 * 60 * 1000);34 35    return () => clearInterval(interval);36  }, [lastAcknowledgedVersion]);37 38  const handleAcknowledgeUpdate = async () => {39    try {40      const { version } = await checkForUpdates();41      await acknowledgeUpdate(version);42 43      // Store in localStorage44      try {45        localStorage.setItem(LAST_ACKNOWLEDGED_VERSION_KEY, version);46      } catch (error) {47        console.error('Failed to persist acknowledged version:', error);48      }49 50      setLastAcknowledgedVersion(version);51      setHasUpdate(false);52    } catch (error) {53      console.error('Failed to acknowledge update:', error);54    }55  };56 57  return { hasUpdate, currentVersion, acknowledgeUpdate: handleAcknowledgeUpdate };58};59