From e1e06febd23520bf9a4aff1fec4558b97882809b Mon Sep 17 00:00:00 2001
From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com>
Date: Wed, 16 Oct 2024 00:44:14 +0900
Subject: [PATCH] [Update] Add Transcription Tab. Mix/Speaker, record timeout,
phrase timeout, max words.
---
src-ui/app/App.jsx | 22 ++
.../setting_box/SettingBox.jsx | 3 +
.../_components/_atoms/_entry/_Entry.jsx | 18 +-
.../setting_box/_components/entry/Entry.jsx | 9 +-
.../transcription/Transcription.jsx | 215 ++++++++++++++++++
.../transcription/Transcription.module.scss | 0
src-ui/logics/configs/index.js | 8 +
.../configs/transcription/useMicMaxWords.js | 24 ++
.../transcription/useMicPhraseTimeout.js | 24 ++
.../transcription/useMicRecordTimeout.js | 24 ++
.../transcription/useSpeakerMaxWords.js | 24 ++
.../transcription/useSpeakerPhraseTimeout.js | 24 ++
.../transcription/useSpeakerRecordTimeout.js | 24 ++
src-ui/logics/useReceiveRoutes.js | 49 ++++
src-ui/store.js | 8 +
15 files changed, 456 insertions(+), 20 deletions(-)
create mode 100644 src-ui/app/config_page/setting_section/setting_box/transcription/Transcription.jsx
create mode 100644 src-ui/app/config_page/setting_section/setting_box/transcription/Transcription.module.scss
create mode 100644 src-ui/logics/configs/transcription/useMicMaxWords.js
create mode 100644 src-ui/logics/configs/transcription/useMicPhraseTimeout.js
create mode 100644 src-ui/logics/configs/transcription/useMicRecordTimeout.js
create mode 100644 src-ui/logics/configs/transcription/useSpeakerMaxWords.js
create mode 100644 src-ui/logics/configs/transcription/useSpeakerPhraseTimeout.js
create mode 100644 src-ui/logics/configs/transcription/useSpeakerRecordTimeout.js
diff --git a/src-ui/app/App.jsx b/src-ui/app/App.jsx
index 461e152d..d7ced329 100644
--- a/src-ui/app/App.jsx
+++ b/src-ui/app/App.jsx
@@ -51,6 +51,12 @@ import {
useMicHostList,
useMicDeviceList,
useSpeakerDeviceList,
+ useMicRecordTimeout,
+ useMicPhraseTimeout,
+ useMicMaxWords,
+ useSpeakerRecordTimeout,
+ useSpeakerPhraseTimeout,
+ useSpeakerMaxWords,
} from "@logics_configs";
import {
@@ -100,6 +106,14 @@ const StartPythonFacadeComponent = () => {
const { getSelectableLanguageList } = useSelectableLanguageList();
const { getMessageInputBoxRatio } = useMessageInputBoxRatio();
+ const { getMicRecordTimeout } = useMicRecordTimeout();
+ const { getMicPhraseTimeout } = useMicPhraseTimeout();
+ const { getMicMaxWords } = useMicMaxWords();
+
+ const { getSpeakerRecordTimeout } = useSpeakerRecordTimeout();
+ const { getSpeakerPhraseTimeout } = useSpeakerPhraseTimeout();
+ const { getSpeakerMaxWords } = useSpeakerMaxWords();
+
useEffect(() => {
if (!hasRunRef.current) {
@@ -143,6 +157,14 @@ const StartPythonFacadeComponent = () => {
getEnableAutomaticMicThreshold();
getEnableAutomaticSpeakerThreshold();
+ getMicRecordTimeout();
+ getMicPhraseTimeout();
+ getMicMaxWords();
+
+ getSpeakerRecordTimeout();
+ getSpeakerPhraseTimeout();
+ getSpeakerMaxWords();
+
getEnableAutoClearMessageBox();
getSendMessageButtonType();
}).catch((err) => {
diff --git a/src-ui/app/config_page/setting_section/setting_box/SettingBox.jsx b/src-ui/app/config_page/setting_section/setting_box/SettingBox.jsx
index 58b6bf68..29a52268 100644
--- a/src-ui/app/config_page/setting_section/setting_box/SettingBox.jsx
+++ b/src-ui/app/config_page/setting_section/setting_box/SettingBox.jsx
@@ -2,6 +2,7 @@ import { useStore_SelectedConfigTabId } from "@store";
import { Device } from "./device/Device";
import { Appearance } from "./appearance/Appearance";
+import { Transcription } from "./transcription/Transcription";
// import { Others } from "./others/Others";
// import { AboutVrct } from "./about_vrct/AboutVrct";
@@ -14,6 +15,8 @@ export const SettingBox = () => {
// return ;
case "appearance":
return ;
+ case "transcription":
+ return ;
// case "about_vrct":
// return ;
diff --git a/src-ui/app/config_page/setting_section/setting_box/_components/_atoms/_entry/_Entry.jsx b/src-ui/app/config_page/setting_section/setting_box/_components/_atoms/_entry/_Entry.jsx
index 317f9ee1..f0276ff8 100644
--- a/src-ui/app/config_page/setting_section/setting_box/_components/_atoms/_entry/_Entry.jsx
+++ b/src-ui/app/config_page/setting_section/setting_box/_components/_atoms/_entry/_Entry.jsx
@@ -1,17 +1,9 @@
-import React, { useState, useRef, forwardRef, useImperativeHandle } from "react";
+import React, { useRef, forwardRef, useImperativeHandle } from "react";
import styles from "./_Entry.module.scss";
-const _Entry = forwardRef(({ width, onChange, initialValue = "" }, ref) => {
- const [input_value, setInputValue] = useState(initialValue);
+const _Entry = forwardRef((props, ref) => {
const inputRef = useRef();
- const onChangeFunction = (e) => {
- setInputValue(e.currentTarget.value);
- if (onChange) {
- onChange(e);
- }
- };
-
useImperativeHandle(ref, () => ({
focus: () => {
inputRef.current.focus();
@@ -22,13 +14,13 @@ const _Entry = forwardRef(({ width, onChange, initialValue = "" }, ref) => {
diff --git a/src-ui/app/config_page/setting_section/setting_box/_components/entry/Entry.jsx b/src-ui/app/config_page/setting_section/setting_box/_components/entry/Entry.jsx
index 0ef15bef..a9908c9d 100644
--- a/src-ui/app/config_page/setting_section/setting_box/_components/entry/Entry.jsx
+++ b/src-ui/app/config_page/setting_section/setting_box/_components/entry/Entry.jsx
@@ -1,15 +1,10 @@
import styles from "./Entry.module.scss";
import { _Entry } from "../_atoms/_entry/_Entry";
-export const Entry = ({width}) => {
-
- const handleInputChange = (e) => {
- console.log(e.currentTarget.value);
- };
-
+export const Entry = (props) => {
return (
- <_Entry width={width} onChange={handleInputChange} initialValue="" />
+ <_Entry {...props} />
);
};
\ No newline at end of file
diff --git a/src-ui/app/config_page/setting_section/setting_box/transcription/Transcription.jsx b/src-ui/app/config_page/setting_section/setting_box/transcription/Transcription.jsx
new file mode 100644
index 00000000..739e9782
--- /dev/null
+++ b/src-ui/app/config_page/setting_section/setting_box/transcription/Transcription.jsx
@@ -0,0 +1,215 @@
+import { useEffect, useState } from "react";
+import { useTranslation } from "react-i18next";
+import styles from "./Transcription.module.scss";
+
+import {
+ useMicRecordTimeout,
+ useMicPhraseTimeout,
+ useMicMaxWords,
+
+ useSpeakerRecordTimeout,
+ useSpeakerPhraseTimeout,
+ useSpeakerMaxWords,
+} from "@logics_configs";
+
+import {
+ EntryContainer,
+} from "../_templates/Templates";
+
+export const Transcription = () => {
+ return (
+ <>
+
+
+ >
+ );
+};
+
+
+const Mic_Container = () => {
+ return (
+ <>
+
+
+
+ >
+ );
+};
+
+const MicRecordTimeout_Box = () => {
+ const { t } = useTranslation();
+ const [ui_variable, setUiVariable] = useState("");
+ const { currentMicRecordTimeout, setMicRecordTimeout } = useMicRecordTimeout();
+ const onChangeFunction = (e) => {
+ const value = e.currentTarget.value;
+ if (value === "") {
+ setUiVariable("");
+ } else {
+ setUiVariable(value);
+ setMicRecordTimeout(value);
+ }
+ };
+
+ useEffect(()=> {
+ setUiVariable(currentMicRecordTimeout.data);
+ }, [currentMicRecordTimeout]);
+
+ return (
+
+ );
+};
+const MicPhraseTimeout_Box = () => {
+ const { t } = useTranslation();
+ const [ui_variable, setUiVariable] = useState("");
+ const { currentMicPhraseTimeout, setMicPhraseTimeout } = useMicPhraseTimeout();
+ const onChangeFunction = (e) => {
+ const value = e.currentTarget.value;
+ if (value === "") {
+ setUiVariable("");
+ } else {
+ setUiVariable(value);
+ setMicPhraseTimeout(value);
+ }
+ };
+
+ useEffect(()=> {
+ setUiVariable(currentMicPhraseTimeout.data);
+ }, [currentMicPhraseTimeout]);
+
+ return (
+
+ );
+};
+const MicMaxWords_Box = () => {
+ const { t } = useTranslation();
+ const [ui_variable, setUiVariable] = useState("");
+ const { currentMicMaxWords, setMicMaxWords } = useMicMaxWords();
+ const onChangeFunction = (e) => {
+ const value = e.currentTarget.value;
+ if (value === "") {
+ setUiVariable("");
+ } else {
+ setUiVariable(value);
+ setMicMaxWords(value);
+ }
+ };
+
+ useEffect(()=> {
+ setUiVariable(currentMicMaxWords.data);
+ }, [currentMicMaxWords]);
+
+ return (
+
+ );
+};
+
+
+
+
+
+const Speaker_Container = () => {
+ return (
+ <>
+
+
+
+ >
+ );
+};
+
+const SpeakerRecordTimeout_Box = () => {
+ const { t } = useTranslation();
+ const [ui_variable, setUiVariable] = useState("");
+ const { currentSpeakerRecordTimeout, setSpeakerRecordTimeout } = useSpeakerRecordTimeout();
+ const onChangeFunction = (e) => {
+ const value = e.currentTarget.value;
+ if (value === "") {
+ setUiVariable("");
+ } else {
+ setUiVariable(value);
+ setSpeakerRecordTimeout(value);
+ }
+ };
+
+ useEffect(()=> {
+ setUiVariable(currentSpeakerRecordTimeout.data);
+ }, [currentSpeakerRecordTimeout]);
+
+ return (
+
+ );
+};
+const SpeakerPhraseTimeout_Box = () => {
+ const { t } = useTranslation();
+ const [ui_variable, setUiVariable] = useState("");
+ const { currentSpeakerPhraseTimeout, setSpeakerPhraseTimeout } = useSpeakerPhraseTimeout();
+ const onChangeFunction = (e) => {
+ const value = e.currentTarget.value;
+ if (value === "") {
+ setUiVariable("");
+ } else {
+ setUiVariable(value);
+ setSpeakerPhraseTimeout(value);
+ }
+ };
+
+ useEffect(()=> {
+ setUiVariable(currentSpeakerPhraseTimeout.data);
+ }, [currentSpeakerPhraseTimeout]);
+
+ return (
+
+ );
+};
+const SpeakerMaxWords_Box = () => {
+ const { t } = useTranslation();
+ const [ui_variable, setUiVariable] = useState("");
+ const { currentSpeakerMaxWords, setSpeakerMaxWords } = useSpeakerMaxWords();
+ const onChangeFunction = (e) => {
+ const value = e.currentTarget.value;
+ if (value === "") {
+ setUiVariable("");
+ } else {
+ setUiVariable(value);
+ setSpeakerMaxWords(value);
+ }
+ };
+
+ useEffect(()=> {
+ setUiVariable(currentSpeakerMaxWords.data);
+ }, [currentSpeakerMaxWords]);
+
+ return (
+
+ );
+};
diff --git a/src-ui/app/config_page/setting_section/setting_box/transcription/Transcription.module.scss b/src-ui/app/config_page/setting_section/setting_box/transcription/Transcription.module.scss
new file mode 100644
index 00000000..e69de29b
diff --git a/src-ui/logics/configs/index.js b/src-ui/logics/configs/index.js
index 33c47d43..22733492 100644
--- a/src-ui/logics/configs/index.js
+++ b/src-ui/logics/configs/index.js
@@ -19,4 +19,12 @@ export { useUiScaling } from "./appearance/useUiScaling";
export { useEnableAutoClearMessageBox } from "./others/useEnableAutoClearMessageBox";
+export { useMicRecordTimeout } from "./transcription/useMicRecordTimeout";
+export { useMicPhraseTimeout } from "./transcription/useMicPhraseTimeout";
+export { useMicMaxWords } from "./transcription/useMicMaxWords";
+
+export { useSpeakerRecordTimeout } from "./transcription/useSpeakerRecordTimeout";
+export { useSpeakerPhraseTimeout } from "./transcription/useSpeakerPhraseTimeout";
+export { useSpeakerMaxWords } from "./transcription/useSpeakerMaxWords";
+
export { useSoftwareVersion } from "./useSoftwareVersion";
\ No newline at end of file
diff --git a/src-ui/logics/configs/transcription/useMicMaxWords.js b/src-ui/logics/configs/transcription/useMicMaxWords.js
new file mode 100644
index 00000000..7415d655
--- /dev/null
+++ b/src-ui/logics/configs/transcription/useMicMaxWords.js
@@ -0,0 +1,24 @@
+import { useStore_MicMaxWords } from "@store";
+import { useStdoutToPython } from "@logics/useStdoutToPython";
+
+export const useMicMaxWords = () => {
+ const { asyncStdoutToPython } = useStdoutToPython();
+ const { currentMicMaxWords, updateMicMaxWords, pendingMicMaxWords } = useStore_MicMaxWords();
+
+ const getMicMaxWords = () => {
+ pendingMicMaxWords();
+ asyncStdoutToPython("/get/data/mic_max_phrases");
+ };
+
+ const setMicMaxWords = (selected_mic_max_phrases) => {
+ pendingMicMaxWords();
+ asyncStdoutToPython("/set/data/mic_max_phrases", selected_mic_max_phrases);
+ };
+
+ return {
+ currentMicMaxWords,
+ getMicMaxWords,
+ updateMicMaxWords,
+ setMicMaxWords,
+ };
+};
\ No newline at end of file
diff --git a/src-ui/logics/configs/transcription/useMicPhraseTimeout.js b/src-ui/logics/configs/transcription/useMicPhraseTimeout.js
new file mode 100644
index 00000000..02601b0c
--- /dev/null
+++ b/src-ui/logics/configs/transcription/useMicPhraseTimeout.js
@@ -0,0 +1,24 @@
+import { useStore_MicPhraseTimeout } from "@store";
+import { useStdoutToPython } from "@logics/useStdoutToPython";
+
+export const useMicPhraseTimeout = () => {
+ const { asyncStdoutToPython } = useStdoutToPython();
+ const { currentMicPhraseTimeout, updateMicPhraseTimeout, pendingMicPhraseTimeout } = useStore_MicPhraseTimeout();
+
+ const getMicPhraseTimeout = () => {
+ pendingMicPhraseTimeout();
+ asyncStdoutToPython("/get/data/mic_phrase_timeout");
+ };
+
+ const setMicPhraseTimeout = (selected_mic_phrase_timeout) => {
+ pendingMicPhraseTimeout();
+ asyncStdoutToPython("/set/data/mic_phrase_timeout", selected_mic_phrase_timeout);
+ };
+
+ return {
+ currentMicPhraseTimeout,
+ getMicPhraseTimeout,
+ updateMicPhraseTimeout,
+ setMicPhraseTimeout,
+ };
+};
\ No newline at end of file
diff --git a/src-ui/logics/configs/transcription/useMicRecordTimeout.js b/src-ui/logics/configs/transcription/useMicRecordTimeout.js
new file mode 100644
index 00000000..27798804
--- /dev/null
+++ b/src-ui/logics/configs/transcription/useMicRecordTimeout.js
@@ -0,0 +1,24 @@
+import { useStore_MicRecordTimeout } from "@store";
+import { useStdoutToPython } from "@logics/useStdoutToPython";
+
+export const useMicRecordTimeout = () => {
+ const { asyncStdoutToPython } = useStdoutToPython();
+ const { currentMicRecordTimeout, updateMicRecordTimeout, pendingMicRecordTimeout } = useStore_MicRecordTimeout();
+
+ const getMicRecordTimeout = () => {
+ pendingMicRecordTimeout();
+ asyncStdoutToPython("/get/data/mic_record_timeout");
+ };
+
+ const setMicRecordTimeout = (selected_mic_record_timeout) => {
+ pendingMicRecordTimeout();
+ asyncStdoutToPython("/set/data/mic_record_timeout", selected_mic_record_timeout);
+ };
+
+ return {
+ currentMicRecordTimeout,
+ getMicRecordTimeout,
+ updateMicRecordTimeout,
+ setMicRecordTimeout,
+ };
+};
\ No newline at end of file
diff --git a/src-ui/logics/configs/transcription/useSpeakerMaxWords.js b/src-ui/logics/configs/transcription/useSpeakerMaxWords.js
new file mode 100644
index 00000000..8678ceb2
--- /dev/null
+++ b/src-ui/logics/configs/transcription/useSpeakerMaxWords.js
@@ -0,0 +1,24 @@
+import { useStore_SpeakerMaxWords } from "@store";
+import { useStdoutToPython } from "@logics/useStdoutToPython";
+
+export const useSpeakerMaxWords = () => {
+ const { asyncStdoutToPython } = useStdoutToPython();
+ const { currentSpeakerMaxWords, updateSpeakerMaxWords, pendingSpeakerMaxWords } = useStore_SpeakerMaxWords();
+
+ const getSpeakerMaxWords = () => {
+ pendingSpeakerMaxWords();
+ asyncStdoutToPython("/get/data/speaker_max_phrases");
+ };
+
+ const setSpeakerMaxWords = (selected_speaker_max_phrases) => {
+ pendingSpeakerMaxWords();
+ asyncStdoutToPython("/set/data/speaker_max_phrases", selected_speaker_max_phrases);
+ };
+
+ return {
+ currentSpeakerMaxWords,
+ getSpeakerMaxWords,
+ updateSpeakerMaxWords,
+ setSpeakerMaxWords,
+ };
+};
\ No newline at end of file
diff --git a/src-ui/logics/configs/transcription/useSpeakerPhraseTimeout.js b/src-ui/logics/configs/transcription/useSpeakerPhraseTimeout.js
new file mode 100644
index 00000000..af9e8fba
--- /dev/null
+++ b/src-ui/logics/configs/transcription/useSpeakerPhraseTimeout.js
@@ -0,0 +1,24 @@
+import { useStore_SpeakerPhraseTimeout } from "@store";
+import { useStdoutToPython } from "@logics/useStdoutToPython";
+
+export const useSpeakerPhraseTimeout = () => {
+ const { asyncStdoutToPython } = useStdoutToPython();
+ const { currentSpeakerPhraseTimeout, updateSpeakerPhraseTimeout, pendingSpeakerPhraseTimeout } = useStore_SpeakerPhraseTimeout();
+
+ const getSpeakerPhraseTimeout = () => {
+ pendingSpeakerPhraseTimeout();
+ asyncStdoutToPython("/get/data/speaker_phrase_timeout");
+ };
+
+ const setSpeakerPhraseTimeout = (selected_speaker_phrase_timeout) => {
+ pendingSpeakerPhraseTimeout();
+ asyncStdoutToPython("/set/data/speaker_phrase_timeout", selected_speaker_phrase_timeout);
+ };
+
+ return {
+ currentSpeakerPhraseTimeout,
+ getSpeakerPhraseTimeout,
+ updateSpeakerPhraseTimeout,
+ setSpeakerPhraseTimeout,
+ };
+};
\ No newline at end of file
diff --git a/src-ui/logics/configs/transcription/useSpeakerRecordTimeout.js b/src-ui/logics/configs/transcription/useSpeakerRecordTimeout.js
new file mode 100644
index 00000000..5d17754c
--- /dev/null
+++ b/src-ui/logics/configs/transcription/useSpeakerRecordTimeout.js
@@ -0,0 +1,24 @@
+import { useStore_SpeakerRecordTimeout } from "@store";
+import { useStdoutToPython } from "@logics/useStdoutToPython";
+
+export const useSpeakerRecordTimeout = () => {
+ const { asyncStdoutToPython } = useStdoutToPython();
+ const { currentSpeakerRecordTimeout, updateSpeakerRecordTimeout, pendingSpeakerRecordTimeout } = useStore_SpeakerRecordTimeout();
+
+ const getSpeakerRecordTimeout = () => {
+ pendingSpeakerRecordTimeout();
+ asyncStdoutToPython("/get/data/speaker_record_timeout");
+ };
+
+ const setSpeakerRecordTimeout = (selected_speaker_record_timeout) => {
+ pendingSpeakerRecordTimeout();
+ asyncStdoutToPython("/set/data/speaker_record_timeout", selected_speaker_record_timeout);
+ };
+
+ return {
+ currentSpeakerRecordTimeout,
+ getSpeakerRecordTimeout,
+ updateSpeakerRecordTimeout,
+ setSpeakerRecordTimeout,
+ };
+};
\ No newline at end of file
diff --git a/src-ui/logics/useReceiveRoutes.js b/src-ui/logics/useReceiveRoutes.js
index c879706c..b6a905d2 100644
--- a/src-ui/logics/useReceiveRoutes.js
+++ b/src-ui/logics/useReceiveRoutes.js
@@ -34,6 +34,12 @@ import {
useUiScaling,
useMessageLogUiScaling,
useTransparency,
+ useMicRecordTimeout,
+ useMicPhraseTimeout,
+ useMicMaxWords,
+ useSpeakerRecordTimeout,
+ useSpeakerPhraseTimeout,
+ useSpeakerMaxWords,
} from "@logics_configs";
export const useReceiveRoutes = () => {
@@ -85,6 +91,14 @@ export const useReceiveRoutes = () => {
const { updateSelectedFontFamily } = useSelectedFontFamily();
const { updateTransparency } = useTransparency();
+ const { updateMicRecordTimeout } = useMicRecordTimeout();
+ const { updateMicPhraseTimeout } = useMicPhraseTimeout();
+ const { updateMicMaxWords } = useMicMaxWords();
+
+ const { updateSpeakerRecordTimeout } = useSpeakerRecordTimeout();
+ const { updateSpeakerPhraseTimeout } = useSpeakerPhraseTimeout();
+ const { updateSpeakerMaxWords } = useSpeakerMaxWords();
+
const routes = {
// Common
"/run/feed_watchdog": () => {},
@@ -227,6 +241,25 @@ export const useReceiveRoutes = () => {
"/get/data/transparency": updateTransparency,
"/set/data/transparency": updateTransparency,
+ // Transcription
+ "/get/data/mic_record_timeout": updateMicRecordTimeout,
+ "/set/data/mic_record_timeout": updateMicRecordTimeout,
+
+ "/get/data/mic_phrase_timeout": updateMicPhraseTimeout,
+ "/set/data/mic_phrase_timeout": updateMicPhraseTimeout,
+
+ "/get/data/mic_max_phrases": updateMicMaxWords,
+ "/set/data/mic_max_phrases": updateMicMaxWords,
+
+ "/get/data/speaker_record_timeout": updateSpeakerRecordTimeout,
+ "/set/data/speaker_record_timeout": updateSpeakerRecordTimeout,
+
+ "/get/data/speaker_phrase_timeout": updateSpeakerPhraseTimeout,
+ "/set/data/speaker_phrase_timeout": updateSpeakerPhraseTimeout,
+
+ "/get/data/speaker_max_phrases": updateSpeakerMaxWords,
+ "/set/data/speaker_max_phrases": updateSpeakerMaxWords,
+
// Others Tab
"/get/data/auto_clear_message_box": updateEnableAutoClearMessageBox,
"/set/enable/auto_clear_message_box": updateEnableAutoClearMessageBox,
@@ -236,6 +269,16 @@ export const useReceiveRoutes = () => {
"/set/data/send_message_button_type": updateSendMessageButtonType,
};
+ const error_routes = {
+ "/set/data/mic_record_timeout": updateMicRecordTimeout,
+ "/set/data/mic_phrase_timeout": updateMicPhraseTimeout,
+ "/set/data/mic_max_phrases": updateMicMaxWords,
+
+ "/set/data/speaker_record_timeout": updateSpeakerRecordTimeout,
+ "/set/data/speaker_phrase_timeout": updateSpeakerPhraseTimeout,
+ "/set/data/speaker_max_phrases": updateSpeakerMaxWords,
+ };
+
const receiveRoutes = (parsed_data) => {
switch (parsed_data.status) {
case 200:
@@ -243,6 +286,12 @@ export const useReceiveRoutes = () => {
(route) ? route(parsed_data.result) : console.error(`Invalid endpoint: ${parsed_data.endpoint}\nresult: ${JSON.stringify(parsed_data.result)}`);
break;
+ case 400:
+ const error_route = error_routes[parsed_data.endpoint];
+ (error_route) ? error_route(parsed_data.result.data) : console.error(`Invalid endpoint: ${parsed_data.endpoint}\nresult: ${JSON.stringify(parsed_data.result)}`);
+ console.error(`status 400: ${JSON.stringify(parsed_data.result)}`);
+ break;
+
case 348:
// console.log(`from backend: %c ${JSON.stringify(parsed_data)}`, style_348);
break;
diff --git a/src-ui/store.js b/src-ui/store.js
index e104d8af..e5e26467 100644
--- a/src-ui/store.js
+++ b/src-ui/store.js
@@ -180,6 +180,14 @@ export const { atomInstance: Atom_Transparency, useHook: useStore_Transparency }
export const { atomInstance: Atom_IsOpenedWordFilterList, useHook: useStore_IsOpenedWordFilterList } = createAtomWithHook(false, "IsOpenedWordFilterList");
export const { atomInstance: Atom_WordFilterList, useHook: useStore_WordFilterList } = createAtomWithHook(word_filter_list, "WordFilterList");
+// Transcription
+export const { atomInstance: Atom_MicRecordTimeout, useHook: useStore_MicRecordTimeout } = createAtomWithHook(0, "MicRecordTimeout");
+export const { atomInstance: Atom_MicPhraseTimeout, useHook: useStore_MicPhraseTimeout } = createAtomWithHook(0, "MicPhraseTimeout");
+export const { atomInstance: Atom_MicMaxWords, useHook: useStore_MicMaxWords } = createAtomWithHook(0, "MicMaxWords");
+
+export const { atomInstance: Atom_SpeakerRecordTimeout, useHook: useStore_SpeakerRecordTimeout } = createAtomWithHook(0, "SpeakerRecordTimeout");
+export const { atomInstance: Atom_SpeakerPhraseTimeout, useHook: useStore_SpeakerPhraseTimeout } = createAtomWithHook(0, "SpeakerPhraseTimeout");
+export const { atomInstance: Atom_SpeakerMaxWords, useHook: useStore_SpeakerMaxWords } = createAtomWithHook(0, "SpeakerMaxWords");
// Others
export const { atomInstance: Atom_EnableAutoClearMessageBox, useHook: useStore_EnableAutoClearMessageBox } = createAtomWithHook(true, "EnableAutoClearMessageBox");