import { useEffect, useState } from "react"; import { useAtom } from "jotai"; import { VoiceAssistAtom, CurrentRollAtom, CurrentGRNAtom, TranscribeAtom, rollsAtom, grnsAtom, searchAtom } from "./Variables"; import { Routes, Route, useNavigate } from "react-router-dom"; import { CusNavbar } from "./Components/CusNavbar"; import RollCard from "./Components/RollCard"; import HomePage from "./Pages/HomePage"; import ErrorPage from "./Pages/ErrorPage"; import AddRollPage from "./Pages/AddRollPage"; import TranscribePage from "./Pages/TranscribePage"; import RollDetailPage from "./Pages/RollDetailPage"; import GRNCard from "./Components/GRNCard"; import GRNDetailPage from "./Pages/GRNDetailPage"; function App() { const [search, setSearch] = useAtom(searchAtom); const [rolls, setRolls] = useAtom(rollsAtom); const [grns, setGrns] = useAtom(grnsAtom); const [voiceAssist, setVoiceAssist] = useAtom(VoiceAssistAtom); const [currentRoll, setCurrentRoll] = useAtom(CurrentRollAtom); const [currentGRN, setCurrentGRN] = useAtom(CurrentGRNAtom); const [transcribe, setTranscribe] = useAtom(TranscribeAtom); const [sidebar, setSidebar] = useState(true); const navigate = useNavigate(); useEffect(() => { if (localStorage.getItem("currentGRN")) { setCurrentGRN(JSON.parse(localStorage.getItem("currentGRN"))); } fetch("/api/grns") .then((res) => res.json()) .then((data) => { setGrns(data["data"]); voiceAssist.on(["open *", "grn *", "open grn *"], true).then((i, wildcard) => { wildcard = wildcard.replace(/\s/g, "").replace(/-/g, ""); let found = false; for (let index = 0; index < data["data"].length; index++) { if (data["data"][index].GRN.toLowerCase() == wildcard.toLowerCase()) { setCurrentGRN(data["data"][index]); localStorage.setItem("currentGRN", JSON.stringify(data["data"][index])); setTranscribe((prev) => [...prev.slice(0, -1), { msg: "open GRN " + wildcard, isCommand: true }]); navigate("/grn"); found = true; } } if (!found) { voiceAssist.say("No GRN found with that Number"); } }); }) .catch((err) => console.error(err)); voiceAssist.emptyCommands(); voiceAssist.on(["search *"], true).then((i, wildcard) => { wildcard = wildcard.replace(/ /g, ""); setSearch(wildcard); setTranscribe((prev) => [...prev.slice(0, -1), { msg: "search " + wildcard, isCommand: true }]); }); voiceAssist.on(["transcribe"]).then((i) => { setTranscribe((prev) => [...prev.slice(0, -1), { msg: "transcribe", isCommand: true }]); navigate("/transcribe"); }); voiceAssist.on(["home", "go to home"]).then((i) => { setTranscribe((prev) => [...prev.slice(0, -1), { msg: "home", isCommand: true }]); navigate("/"); }); voiceAssist.on(["refresh"]).then((i) => { window.location.reload(); }); voiceAssist.fatality(); setTimeout(() => { voiceAssist .initialize({ lang: "en-US", continuous: true, soundex: true, debug: true, executionKeyword: "and do it now", listen: true, name: "", speed: 1.2, // mode:"quick" }) .then(() => { console.log("Artyom has been succesfully initialized"); }) .catch((err) => { console.error("Artyom couldn't be initialized: ", err); }); }, 250); voiceAssist.redirectRecognizedTextOutput((recognized, isFinal) => { if (isFinal && recognized != "") { setTranscribe((prev) => [...prev, { msg: recognized, isCommand: false }]); } }); }, []); return (
{item?.msg}