Franknoirot/video loading (#248)

* Refactor Loading to take children

* Add loading state to stream
This commit is contained in:
Frank Noirot
2023-08-10 16:22:45 -04:00
committed by GitHub
parent 3a93839a2d
commit ae460ed02f
3 changed files with 17 additions and 5 deletions

View File

@ -32,5 +32,9 @@ export const Auth = ({ children }: React.PropsWithChildren) => {
} }
}, [user, token, navigate, isLoading]) }, [user, token, navigate, isLoading])
return isLoading ? <Loading /> : <>{children}</> return isLoading ? (
<Loading>Loading KittyCAD Modeling App...</Loading>
) : (
<>{children}</>
)
} }

View File

@ -1,6 +1,6 @@
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
const Loading = () => { const Loading = ({ children }: React.PropsWithChildren) => {
const [hasLongLoadTime, setHasLongLoadTime] = useState(false) const [hasLongLoadTime, setHasLongLoadTime] = useState(false)
useEffect(() => { useEffect(() => {
const timer = setTimeout(() => { const timer = setTimeout(() => {
@ -23,12 +23,12 @@ const Loading = () => {
className="animate-spin origin-center" className="animate-spin origin-center"
/> />
</svg> </svg>
<p className="mt-4 text-liquid-80 dark:text-liquid-20"> <p className="text-base mt-4 text-liquid-80 dark:text-liquid-20">
Loading KittyCAD Modeling App... {children || 'Loading'}
</p> </p>
<p <p
className={ className={
'mt-4 text-liquid-90 dark:text-liquid-10 transition-opacity duration-500' + 'text-sm mt-4 text-liquid-90 dark:text-liquid-10 transition-opacity duration-500' +
(hasLongLoadTime ? ' opacity-100' : ' opacity-0') (hasLongLoadTime ? ' opacity-100' : ' opacity-0')
} }
> >

View File

@ -10,8 +10,10 @@ import { useStore } from '../useStore'
import { throttle } from '../lib/utils' import { throttle } from '../lib/utils'
import { EngineCommand } from '../lang/std/engineConnection' import { EngineCommand } from '../lang/std/engineConnection'
import { getNormalisedCoordinates } from '../lib/utils' import { getNormalisedCoordinates } from '../lib/utils'
import Loading from './Loading'
export const Stream = ({ className = '' }) => { export const Stream = ({ className = '' }) => {
const [isLoading, setIsLoading] = useState(true)
const [zoom, setZoom] = useState(0) const [zoom, setZoom] = useState(0)
const videoRef = useRef<HTMLVideoElement>(null) const videoRef = useRef<HTMLVideoElement>(null)
const { const {
@ -159,8 +161,14 @@ export const Stream = ({ className = '' }) => {
onContextMenu={(e) => e.preventDefault()} onContextMenu={(e) => e.preventDefault()}
onContextMenuCapture={(e) => e.preventDefault()} onContextMenuCapture={(e) => e.preventDefault()}
onWheelCapture={handleScroll} onWheelCapture={handleScroll}
onPlay={() => setIsLoading(false)}
className="w-full h-full" className="w-full h-full"
/> />
{isLoading && (
<div className="text-center absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2">
<Loading>Loading stream...</Loading>
</div>
)}
</div> </div>
) )
} }