short-url/components/Redirect.tsx
2024-11-26 12:45:06 +08:00

30 lines
737 B
TypeScript

'use client'
import { useEffect, useState } from 'react'
import { Progress } from "@/components/ui/progress"
export default function Redirect({ url }: { url: string }) {
const [progress, setProgress] = useState(0)
useEffect(() => {
const timer = setInterval(() => {
setProgress((oldProgress) => {
if (oldProgress === 100) {
clearInterval(timer)
window.location.href = url
return 100
}
const diff = 100 / 50 // 50 steps for 5 seconds
return Math.min(oldProgress + diff, 100)
})
}, 100)
return () => clearInterval(timer)
}, [url])
return (
<Progress value={progress} className="w-full h-2 bg-blue-200 fixed top-0 left-0 z-50" />
)
}