From a45384529f03bce4e74eed0284ee14c4219e672e Mon Sep 17 00:00:00 2001 From: Luke Rogerson Date: Sun, 7 Jan 2024 22:23:42 +0000 Subject: [PATCH] Add model loading status --- src/App.tsx | 51 +++++++++++++++++++++++++-------------- src/components/loader.tsx | 25 +++++++++++++++++++ 2 files changed, 58 insertions(+), 18 deletions(-) create mode 100644 src/components/loader.tsx diff --git a/src/App.tsx b/src/App.tsx index 0b20c43..320fe8e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -4,11 +4,11 @@ */ import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; -import { Button } from "@/components/ui/button"; import { useCallback, useEffect, useRef, useState } from "react"; import { Thumbs } from "./components/thumbs"; -import { pipeline, env } from "@xenova/transformers"; +import { env, pipeline } from "@xenova/transformers"; +import { LoaderIcon } from "./components/loader"; import { Sentiment } from "./types"; // Skip local model check @@ -25,10 +25,10 @@ type Result = { }; export default function App() { + const [modelStatus, setModelStatus] = useState(""); const [statement, setStatement] = useState("I love this app!"); const classifier = useRef(null); const [result, setResult] = useState(null); - console.log("result :", result); const [loading, setLoading] = useState(true); const queryModel = useCallback((query: string) => { @@ -41,15 +41,23 @@ export default function App() { useEffect(() => { (async () => { - classifier.current = await pipeline(TASK, MODEL); + classifier.current = (await pipeline(TASK, MODEL, { + progress_callback: progressUpdate, + })) as unknown as TextClassificationPipeline; queryModel(statement); })(); - }, []); + }, [queryModel, statement]); useEffect(() => { setLoading(true); queryModel(statement); - }, [statement]); + }, [queryModel, statement]); + + const progressUpdate = ({ status }: { status: string }) => { + if (status === "ready") { + setModelStatus(status); + } + }; return (
@@ -64,17 +72,24 @@ export default function App() {
-