File size: 1,075 Bytes
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 |
import React, { createContext, useContext, useEffect, useState } from 'react';
interface ModelContextType {
progress: number;
status: string;
setProgress: (progress: number) => void;
setStatus: (status: string) => void;
model: string;
setModel: (model: string) => 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 [model, setModel] = useState<string>('');
// set progress to 0 when model is changed
useEffect(() => {
setProgress(0);
}, [model]);
return (
<ModelContext.Provider
value={{ progress, setProgress, status, setStatus, model, setModel }}
>
{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;
}
|