import { useTypebot } from '@/features/editor' import { Button, DarkMode, Flex, HStack, SlideFade, Stack, Text, } from '@chakra-ui/react' import { useEffect, useState } from 'react' import { sendRequest } from 'utils' import { PackageIcon } from './icons' const intervalDuration = 1000 * 60 // 30 seconds export const NewVersionPopup = () => { const { typebot, save } = useTypebot() const [currentVersion, setCurrentVersion] = useState() const [isNewVersionAvailable, setIsNewVersionAvailable] = useState(false) const [isReloading, setIsReloading] = useState(false) useEffect(() => { if (isNewVersionAvailable) return let cancelRequest = false const interval = setInterval(async () => { const { data } = await sendRequest<{ commitSha: string | undefined }>('/api/version') if (!data || cancelRequest) return if (!currentVersion) { setCurrentVersion(data.commitSha) return } if (currentVersion !== data.commitSha) { setIsNewVersionAvailable(true) } }, intervalDuration) return () => { cancelRequest = true clearInterval(interval) } }, [currentVersion, isNewVersionAvailable]) const saveAndReload = async () => { if (isReloading) return setIsReloading(true) if (save) await save() window.location.reload() } return ( {' '} New version available! An improved version of Typebot is available. Please reload now to upgrade. ) }