-
);
diff --git a/src-ui/app/config_page/setting_section/setting_box/components/threshold_component/volume_check_button/VolumeCheckButton.module.scss b/src-ui/app/config_page/setting_section/setting_box/components/threshold_component/volume_check_button/VolumeCheckButton.module.scss
index 00d07b69..622323fb 100644
--- a/src-ui/app/config_page/setting_section/setting_box/components/threshold_component/volume_check_button/VolumeCheckButton.module.scss
+++ b/src-ui/app/config_page/setting_section/setting_box/components/threshold_component/volume_check_button/VolumeCheckButton.module.scss
@@ -1,14 +1,45 @@
-.button_button {
+.button {
width: 100%;
background-color: var(--dark_800_color);
display: flex;
justify-content: center;
align-items: center;
- padding: 1rem;
- border-radius: 50%;
+ padding: 0.8rem 1rem;
+ border-radius: 0.4rem;
+ gap: 0.4rem;
+ cursor: pointer;
+ &.is_active {
+ background-color: var(--primary_500_color);
+ &:hover {
+ background-color: var(--primary_450_color);
+ }
+ &:active {
+ background-color: var(--primary_550_color);
+ }
+ }
+ &.is_loading {
+ background-color: var(--dark_850_color);
+ pointer-events: none;
+ .button_svg, .button_text {
+ color: var(--dark_500_color);
+ }
+ }
+
+
+ &:hover {
+ background-color: var(--dark_775_color);
+ }
+ &:active {
+ background-color: var(--dark_850_color);
+ }
}
.button_svg {
- width: 2.6rem;
+ width: 1.4rem;
color: var(--dark_350_color);
+}
+
+.button_text {
+ font-size: 1.2rem;
+ color: var(--dark_basic_text_color);
}
\ No newline at end of file
diff --git a/src-ui/logics/useReceiveRoutes.js b/src-ui/logics/useReceiveRoutes.js
index e57cd785..badd556b 100644
--- a/src-ui/logics/useReceiveRoutes.js
+++ b/src-ui/logics/useReceiveRoutes.js
@@ -42,7 +42,12 @@ export const useReceiveRoutes = () => {
const { updateSendMessageButtonType } = useSendMessageButtonType();
- const { updateVolumeVariable_Mic, updateVolumeVariable_Speaker } = useVolume();
+ const {
+ updateVolumeVariable_Mic,
+ updateVolumeVariable_Speaker,
+ updateMicThresholdCheckStatus,
+ updateSpeakerThresholdCheckStatus,
+ } = useVolume();
const routes = {
"/controller/callback_enable_translation": updateTranslationStatus,
@@ -72,6 +77,10 @@ export const useReceiveRoutes = () => {
"/action/check_mic_threshold_energy": updateVolumeVariable_Mic,
"/action/check_speaker_threshold_energy": updateVolumeVariable_Speaker,
+ "/controller/callback_enable_check_mic_threshold": () => updateMicThresholdCheckStatus(true),
+ "/controller/callback_disable_check_mic_threshold": () => updateMicThresholdCheckStatus(false),
+ "/controller/callback_enable_check_speaker_threshold": () => updateSpeakerThresholdCheckStatus(true),
+ "/controller/callback_disable_check_speaker_threshold": () => updateSpeakerThresholdCheckStatus(false),
"/config/enable_auto_clear_message_box": updateEnableAutoClearMessageBox,
"/controller/callback_enable_auto_clear_chatbox": updateEnableAutoClearMessageBox,
diff --git a/src-ui/logics/useVolume.js b/src-ui/logics/useVolume.js
index ee0dc138..a1991159 100644
--- a/src-ui/logics/useVolume.js
+++ b/src-ui/logics/useVolume.js
@@ -1,6 +1,8 @@
import {
useStore_MicVolume,
useStore_SpeakerVolume,
+ useStore_MicThresholdCheckStatus,
+ useStore_SpeakerThresholdCheckStatus,
} from "@store";
import { useStdoutToPython } from "@logics/useStdoutToPython";
@@ -9,19 +11,38 @@ export const useVolume = () => {
const { asyncStdoutToPython } = useStdoutToPython();
const { updateMicVolume } = useStore_MicVolume();
const { updateSpeakerVolume } = useStore_SpeakerVolume();
+ const { currentMicThresholdCheckStatus, updateMicThresholdCheckStatus } = useStore_MicThresholdCheckStatus();
+ const { currentSpeakerThresholdCheckStatus, updateSpeakerThresholdCheckStatus } = useStore_SpeakerThresholdCheckStatus();
+ const asyncPending = () => new Promise(() => {});
return {
- volumeCheckStart_Mic: () => asyncStdoutToPython("/controller/callback_enable_check_mic_threshold"),
- volumeCheckStop_Mic: () => asyncStdoutToPython("/controller/callback_disable_check_mic_threshold"),
+ volumeCheckStart_Mic: () => {
+ updateMicThresholdCheckStatus(asyncPending);
+ asyncStdoutToPython("/controller/callback_enable_check_mic_threshold");
+ },
+ volumeCheckStop_Mic: () => {
+ updateMicThresholdCheckStatus(asyncPending);
+ asyncStdoutToPython("/controller/callback_disable_check_mic_threshold");
+ },
updateVolumeVariable_Mic: (payload) => {
updateMicVolume(payload);
},
+ currentMicThresholdCheckStatus: currentMicThresholdCheckStatus,
+ updateMicThresholdCheckStatus: (payload) => updateMicThresholdCheckStatus(payload),
- volumeCheckStart_Speaker: () => asyncStdoutToPython("/controller/callback_enable_check_speaker_threshold"),
- volumeCheckStop_Speaker: () => asyncStdoutToPython("/controller/callback_disable_check_speaker_threshold"),
+ volumeCheckStart_Speaker: () => {
+ updateSpeakerThresholdCheckStatus(asyncPending);
+ asyncStdoutToPython("/controller/callback_enable_check_speaker_threshold");
+ },
+ volumeCheckStop_Speaker: () => {
+ updateSpeakerThresholdCheckStatus(asyncPending);
+ asyncStdoutToPython("/controller/callback_disable_check_speaker_threshold");
+ },
updateVolumeVariable_Speaker: (payload) => {
updateSpeakerVolume(payload);
},
+ currentSpeakerThresholdCheckStatus: currentSpeakerThresholdCheckStatus,
+ updateSpeakerThresholdCheckStatus: (payload) => updateSpeakerThresholdCheckStatus(payload),
};
};
\ No newline at end of file
diff --git a/src-ui/store.js b/src-ui/store.js
index 721a0b9d..9a161d83 100644
--- a/src-ui/store.js
+++ b/src-ui/store.js
@@ -127,6 +127,9 @@ export const { atomInstance: Atom_SelectedSpeakerDevice, useHook: useStore_Selec
export const { atomInstance: Atom_MicVolume, useHook: useStore_MicVolume } = createAsyncAtomWithHook(0, "MicVolume");
export const { atomInstance: Atom_SpeakerVolume, useHook: useStore_SpeakerVolume } = createAsyncAtomWithHook(0, "SpeakerVolume");
+export const { atomInstance: Atom_MicThresholdCheckStatus, useHook: useStore_MicThresholdCheckStatus } = createAsyncAtomWithHook(false, "MicThresholdCheckStatus");
+export const { atomInstance: Atom_SpeakerThresholdCheckStatus, useHook: useStore_SpeakerThresholdCheckStatus } = createAsyncAtomWithHook(false, "SpeakerThresholdCheckStatus");
+
export const { atomInstance: Atom_MicThreshold, useHook: useStore_MicThreshold } = createAtomWithHook(0, "MicThreshold");
export const { atomInstance: Atom_SpeakerThreshold, useHook: useStore_SpeakerThreshold } = createAtomWithHook(0, "SpeakerThreshold");