import * as React from "react"; import { createRoot } from "react-dom/client"; import "./css/App.css" import { ErrorInfo, useMemo, useState, } from "react"; import { useMicrophoneOptions } from "./100_options_microphone"; import { AppStateProvider, useAppState } 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 } 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"; library.add(fas, far, fab); const container = document.getElementById("app")!; const root = createRoot(container); const App = () => { const appState = useAppState() const { removeItem } = useIndexedDB({ clientType: CLIENT_TYPE }) const { voiceChangerSetting } = useMicrophoneOptions() const titleRow = useMemo(() => { return (
Voice Changer Setting for MMVC v.1.3.x github manual コーヒーを寄付
) }, []) const clearRow = useMemo(() => { const onClearSettingClicked = async () => { await appState.clearSetting() await removeItem(INDEXEDDB_KEY_AUDIO_OUTPUT) location.reload() } return ( <>
clear setting
) }, []) const mainSetting = useMemo(() => { return ( <>
{titleRow} {clearRow} {voiceChangerSetting}
) }, [voiceChangerSetting]) return ( <> {mainSetting} ) } const AppStateWrapper = () => { // エラーバウンダリー設定 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 }) } return ( ) } root.render( );