import * as React from "react"; import { createRoot } from "react-dom/client"; import "./css/App.css" import { ErrorInfo, useMemo, useState, } from "react"; import { AppStateProvider } from "./001_provider/001_AppStateProvider"; import { library } from "@fortawesome/fontawesome-svg-core"; import { fas } from "@fortawesome/free-solid-svg-icons"; import { far } from "@fortawesome/free-regular-svg-icons"; import { fab } from "@fortawesome/free-brands-svg-icons"; import { AppRootProvider, useAppRoot } from "./001_provider/001_AppRootProvider"; import ErrorBoundary from "./001_provider/900_ErrorBoundary"; import { INDEXEDDB_KEY_CLIENT, INDEXEDDB_KEY_MODEL_DATA, INDEXEDDB_KEY_SERVER, INDEXEDDB_KEY_WORKLET, INDEXEDDB_KEY_WORKLETNODE, useIndexedDB } from "@dannadori/voice-changer-client-js"; import { CLIENT_TYPE, INDEXEDDB_KEY_AUDIO_OUTPUT } from "./const"; import { Demo } from "./components/demo/010_Demo"; library.add(fas, far, fab); const container = document.getElementById("app")!; const root = createRoot(container); const App = () => { const { appGuiSettingState } = useAppRoot() const front = useMemo(() => { if (appGuiSettingState.appGuiSetting.type == "demo") { return } else { return <>unknown gui type. {appGuiSettingState.appGuiSetting.type} } }, [appGuiSettingState.appGuiSetting.type]) return ( <> {front} ) } const AppStateWrapper = () => { const { appGuiSettingState } = useAppRoot() // エラーバウンダリー設定 const [error, setError] = useState<{ error: Error, errorInfo: ErrorInfo }>() const { removeItem } = useIndexedDB({ clientType: CLIENT_TYPE }) const errorComponent = useMemo(() => { const errorName = error?.error.name || "no error name" const errorMessage = error?.error.message || "no error message" const errorInfos = (error?.errorInfo.componentStack || "no error stack").split("\n") const onClearCacheClicked = async () => { const indexedDBKeys = [ INDEXEDDB_KEY_CLIENT, INDEXEDDB_KEY_SERVER, INDEXEDDB_KEY_WORKLETNODE, INDEXEDDB_KEY_MODEL_DATA, INDEXEDDB_KEY_WORKLET, INDEXEDDB_KEY_AUDIO_OUTPUT ] for (const k of indexedDBKeys) { await removeItem(k) } location.reload(); } return (
ちょっと問題が起きたみたいです。

このアプリで管理している情報をクリアすると回復する場合があります。

下記のボタンを押して情報をクリアします。

{errorName}
{errorMessage}
{errorInfos.map(x => { return
{x}
})}
) }, [error]) const updateError = (error: Error, errorInfo: React.ErrorInfo) => { console.log("error compo", error, errorInfo) setError({ error, errorInfo }) } if (!appGuiSettingState.guiSettingLoaded) { return <> } else { return ( ) } } root.render( );