import { useStore_EnableAutoMicSelect, useStore_EnableAutoSpeakerSelect, useStore_MicDeviceList, useStore_MicHostList, useStore_SpeakerDeviceList, useStore_SelectedMicHost, useStore_SelectedMicDevice, useStore_SelectedSpeakerDevice, useStore_MicThreshold, useStore_EnableAutomaticMicThreshold, useStore_SpeakerThreshold, useStore_EnableAutomaticSpeakerThreshold, } from "@store"; import { useStdoutToPython } from "@useStdoutToPython"; import { arrayToObject } from "@utils"; import { useNotificationStatus } from "@logics_common"; export const useDevice = () => { const { asyncStdoutToPython } = useStdoutToPython(); const { showNotification_SaveSuccess } = useNotificationStatus(); const { currentEnableAutoMicSelect, updateEnableAutoMicSelect, pendingEnableAutoMicSelect } = useStore_EnableAutoMicSelect(); const { currentEnableAutoSpeakerSelect, updateEnableAutoSpeakerSelect, pendingEnableAutoSpeakerSelect } = useStore_EnableAutoSpeakerSelect(); const { currentMicDeviceList, updateMicDeviceList, pendingMicDeviceList } = useStore_MicDeviceList(); const { currentMicHostList, updateMicHostList, pendingMicHostList } = useStore_MicHostList(); const { currentSpeakerDeviceList, updateSpeakerDeviceList, pendingSpeakerDeviceList } = useStore_SpeakerDeviceList(); const { currentSelectedMicHost, updateSelectedMicHost, pendingSelectedMicHost } = useStore_SelectedMicHost(); const { currentSelectedMicDevice, updateSelectedMicDevice, pendingSelectedMicDevice } = useStore_SelectedMicDevice(); const { currentSelectedSpeakerDevice, updateSelectedSpeakerDevice, pendingSelectedSpeakerDevice } = useStore_SelectedSpeakerDevice(); const { currentMicThreshold, updateMicThreshold } = useStore_MicThreshold(); const { currentEnableAutomaticMicThreshold, updateEnableAutomaticMicThreshold, pendingEnableAutomaticMicThreshold } = useStore_EnableAutomaticMicThreshold(); const { currentSpeakerThreshold, updateSpeakerThreshold } = useStore_SpeakerThreshold(); const { currentEnableAutomaticSpeakerThreshold, updateEnableAutomaticSpeakerThreshold, pendingEnableAutomaticSpeakerThreshold } = useStore_EnableAutomaticSpeakerThreshold(); // Auto Select (Mic) const getEnableAutoMicSelect = () => { pendingEnableAutoMicSelect(); asyncStdoutToPython("/get/data/auto_mic_select"); }; const toggleEnableAutoMicSelect = () => { pendingEnableAutoMicSelect(); if (currentEnableAutoMicSelect.data) { asyncStdoutToPython("/set/disable/auto_mic_select"); } else { asyncStdoutToPython("/set/enable/auto_mic_select"); } }; const setSuccessEnableAutoMicSelect = (enabled) => { updateEnableAutoMicSelect(enabled); showNotification_SaveSuccess(); }; // Auto Select (Speaker) const getEnableAutoSpeakerSelect = () => { pendingEnableAutoSpeakerSelect(); asyncStdoutToPython("/get/data/auto_speaker_select"); }; const toggleEnableAutoSpeakerSelect = () => { pendingEnableAutoSpeakerSelect(); if (currentEnableAutoSpeakerSelect.data) { asyncStdoutToPython("/set/disable/auto_speaker_select"); } else { asyncStdoutToPython("/set/enable/auto_speaker_select"); } }; const setSuccessEnableAutoSpeakerSelect = (enabled) => { updateEnableAutoSpeakerSelect(enabled); showNotification_SaveSuccess(); }; // List (Mic device) const getMicDeviceList = () => { pendingMicDeviceList(); asyncStdoutToPython("/get/data/mic_device_list"); }; const updateMicDeviceList_FromBackend = (payload) => { updateMicDeviceList(arrayToObject(payload)); }; // List (Mic host) const getMicHostList = () => { pendingMicHostList(); asyncStdoutToPython("/get/data/mic_host_list"); }; const updateMicHostList_FromBackend = (payload) => { updateMicHostList(arrayToObject(payload)); }; // List (Speaker device) const getSpeakerDeviceList = () => { pendingSpeakerDeviceList(); asyncStdoutToPython("/get/data/speaker_device_list"); }; const updateSpeakerDeviceList_FromBackend = (payload) => { updateSpeakerDeviceList(arrayToObject(payload)); }; // Selected (Mic host) const getSelectedMicHost = () => { pendingSelectedMicHost(); asyncStdoutToPython("/get/data/selected_mic_host"); }; const setSelectedMicHost = (selected_mic_host) => { pendingSelectedMicHost(); asyncStdoutToPython("/set/data/selected_mic_host", selected_mic_host); }; const setSuccessSelectedMicHost = (payload) => { updateSelectedMicHostAndDevice(payload); // Receive host and device from backend. showNotification_SaveSuccess(); }; // Selected (Mic device) const getSelectedMicDevice = () => { pendingSelectedMicDevice(); asyncStdoutToPython("/get/data/selected_mic_device"); }; const setSelectedMicDevice = (selected_mic_device) => { pendingSelectedMicDevice(); asyncStdoutToPython("/set/data/selected_mic_device", selected_mic_device); }; const setSuccessSelectedMicDevice = (selected_mic_device) => { updateSelectedMicDevice(selected_mic_device); showNotification_SaveSuccess(); }; // Selected (Mic Device and Host) const updateSelectedMicHostAndDevice = (payload) => { updateSelectedMicHost(payload.host); updateSelectedMicDevice(payload.device); } // Selected (Speaker device) const getSelectedSpeakerDevice = () => { pendingSelectedSpeakerDevice(); asyncStdoutToPython("/get/data/selected_speaker_device"); }; const setSelectedSpeakerDevice = (selected_speaker_device) => { pendingSelectedSpeakerDevice(); asyncStdoutToPython("/set/data/selected_speaker_device", selected_speaker_device); }; const setSuccessSelectedSpeakerDevice = (selected_speaker_device) => { updateSelectedSpeakerDevice(selected_speaker_device); showNotification_SaveSuccess(); }; // Threshold (Mic) const getMicThreshold = () => { asyncStdoutToPython("/get/data/mic_threshold"); }; const setMicThreshold = (mic_threshold) => { asyncStdoutToPython("/set/data/mic_threshold", mic_threshold); }; const setSuccessMicThreshold = (mic_threshold) => { updateMicThreshold(mic_threshold); showNotification_SaveSuccess(); }; const getEnableAutomaticMicThreshold = () => { pendingEnableAutomaticMicThreshold(); asyncStdoutToPython("/get/data/mic_automatic_threshold"); }; const toggleEnableAutomaticMicThreshold = () => { pendingEnableAutomaticMicThreshold(); if (currentEnableAutomaticMicThreshold.data) { asyncStdoutToPython("/set/disable/mic_automatic_threshold"); } else { asyncStdoutToPython("/set/enable/mic_automatic_threshold"); } }; const setSuccessEnableAutomaticMicThreshold = (enabled) => { updateEnableAutomaticMicThreshold(enabled); showNotification_SaveSuccess(); }; // Threshold (Speaker) const getSpeakerThreshold = () => { asyncStdoutToPython("/get/data/speaker_threshold"); }; const setSpeakerThreshold = (speaker_threshold) => { asyncStdoutToPython("/set/data/speaker_threshold", speaker_threshold); }; const setSuccessSpeakerThreshold = (speaker_threshold) => { updateSpeakerThreshold(speaker_threshold); showNotification_SaveSuccess(); }; const getEnableAutomaticSpeakerThreshold = () => { pendingEnableAutomaticSpeakerThreshold(); asyncStdoutToPython("/get/data/speaker_automatic_threshold"); }; const toggleEnableAutomaticSpeakerThreshold = () => { pendingEnableAutomaticSpeakerThreshold(); if (currentEnableAutomaticSpeakerThreshold.data) { asyncStdoutToPython("/set/disable/speaker_automatic_threshold"); } else { asyncStdoutToPython("/set/enable/speaker_automatic_threshold"); } }; const setSuccessEnableAutomaticSpeakerThreshold = (enabled) => { updateEnableAutomaticSpeakerThreshold(enabled); showNotification_SaveSuccess(); }; return { currentEnableAutoMicSelect, getEnableAutoMicSelect, updateEnableAutoMicSelect, toggleEnableAutoMicSelect, setSuccessEnableAutoMicSelect, currentEnableAutoSpeakerSelect, getEnableAutoSpeakerSelect, updateEnableAutoSpeakerSelect, toggleEnableAutoSpeakerSelect, setSuccessEnableAutoSpeakerSelect, currentMicDeviceList, getMicDeviceList, updateMicDeviceList, updateMicDeviceList_FromBackend, currentMicHostList, getMicHostList, updateMicHostList, updateMicHostList_FromBackend, currentSpeakerDeviceList, getSpeakerDeviceList, updateSpeakerDeviceList, updateSpeakerDeviceList_FromBackend, currentSelectedMicHost, getSelectedMicHost, updateSelectedMicHost, setSelectedMicHost, setSuccessSelectedMicHost, currentSelectedMicDevice, getSelectedMicDevice, updateSelectedMicDevice, setSelectedMicDevice, setSuccessSelectedMicDevice, updateSelectedMicHostAndDevice, currentSelectedSpeakerDevice, getSelectedSpeakerDevice, updateSelectedSpeakerDevice, setSelectedSpeakerDevice, setSuccessSelectedSpeakerDevice, currentMicThreshold, getMicThreshold, setMicThreshold, updateMicThreshold, setSuccessMicThreshold, currentEnableAutomaticMicThreshold, getEnableAutomaticMicThreshold, toggleEnableAutomaticMicThreshold, updateEnableAutomaticMicThreshold, setSuccessEnableAutomaticMicThreshold, currentSpeakerThreshold, getSpeakerThreshold, setSpeakerThreshold, updateSpeakerThreshold, setSuccessSpeakerThreshold, currentEnableAutomaticSpeakerThreshold, getEnableAutomaticSpeakerThreshold, toggleEnableAutomaticSpeakerThreshold, updateEnableAutomaticSpeakerThreshold, setSuccessEnableAutomaticSpeakerThreshold, }; };