File size: 1,204 Bytes
96812c9 fb852fe 96812c9 fb852fe 96812c9 fb852fe 96812c9 fb852fe 96812c9 fb852fe 96812c9 fb852fe 96812c9 fb852fe 96812c9 fb852fe 96812c9 fb852fe 96812c9 fb852fe |
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 |
import React, { createContext, useContext, useEffect, useState } from 'react'
import { ModelInfo } from '../types'
interface ModelContextType {
progress: number
status: string
setProgress: (progress: number) => void
setStatus: (status: string) => void
modelInfo: ModelInfo
setModelInfo: (model: ModelInfo) => void
}
const ModelContext = createContext<ModelContextType | undefined>(undefined)
export function ModelProvider({ children }: { children: React.ReactNode }) {
const [progress, setProgress] = useState<number>(0)
const [status, setStatus] = useState<string>('idle')
const [modelInfo, setModelInfo] = useState<ModelInfo>({} as ModelInfo)
// set progress to 0 when model is changed
useEffect(() => {
setProgress(0)
}, [modelInfo.name])
return (
<ModelContext.Provider
value={{
progress,
setProgress,
status,
setStatus,
modelInfo,
setModelInfo
}}
>
{children}
</ModelContext.Provider>
)
}
export function useModel() {
const context = useContext(ModelContext)
if (context === undefined) {
throw new Error('useModel must be used within a ModelProvider')
}
return context
}
|