2025-02-26 13:39:43 +02:00
|
|
|
use crate::entity::roomconfig::{
|
|
|
|
|
RoomSettings, SpeechToTextFlowType,
|
|
|
|
|
SpeechToTextMessageTypeForNonThreadedOnlyTranscribedMessages,
|
|
|
|
|
};
|
2025-02-27 07:46:16 +02:00
|
|
|
use crate::{Bot, entity::MessageContext};
|
2024-09-12 13:44:06 +03:00
|
|
|
|
|
|
|
|
use super::super::controller_type::{
|
|
|
|
|
ConfigSpeechToTextSettingRelatedControllerType, SettingsStorageSource,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
use super::super::common::generic_setting::handle_get as setting_get;
|
|
|
|
|
|
|
|
|
|
use super::super::global_config::generic_setting::handle_set as global_setting_set;
|
|
|
|
|
|
|
|
|
|
use super::super::room_config::generic_setting::handle_set as room_setting_set;
|
|
|
|
|
|
|
|
|
|
pub(super) async fn dispatch(
|
|
|
|
|
handler: &ConfigSpeechToTextSettingRelatedControllerType,
|
|
|
|
|
message_context: &MessageContext,
|
|
|
|
|
bot: &Bot,
|
|
|
|
|
room_settings: &RoomSettings,
|
|
|
|
|
config_type: &SettingsStorageSource,
|
|
|
|
|
) -> anyhow::Result<()> {
|
|
|
|
|
match handler {
|
|
|
|
|
ConfigSpeechToTextSettingRelatedControllerType::GetFlowType => {
|
|
|
|
|
let value = &room_settings.speech_to_text.flow_type;
|
|
|
|
|
setting_get::<SpeechToTextFlowType>(bot, message_context, value).await
|
|
|
|
|
}
|
|
|
|
|
ConfigSpeechToTextSettingRelatedControllerType::SetFlowType(value) => {
|
|
|
|
|
let value = value.to_owned();
|
|
|
|
|
|
|
|
|
|
let setter_callback = Box::new(move |room_settings: &mut RoomSettings| {
|
|
|
|
|
room_settings.speech_to_text.flow_type = value;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
match config_type {
|
|
|
|
|
SettingsStorageSource::Room => {
|
|
|
|
|
room_setting_set::<SpeechToTextFlowType>(
|
|
|
|
|
bot,
|
|
|
|
|
message_context,
|
|
|
|
|
&value,
|
|
|
|
|
setter_callback,
|
|
|
|
|
)
|
|
|
|
|
.await
|
|
|
|
|
}
|
|
|
|
|
SettingsStorageSource::Global => {
|
|
|
|
|
global_setting_set::<SpeechToTextFlowType>(
|
|
|
|
|
bot,
|
|
|
|
|
message_context,
|
|
|
|
|
&value,
|
|
|
|
|
setter_callback,
|
|
|
|
|
)
|
|
|
|
|
.await
|
|
|
|
|
}
|
2025-02-26 13:39:43 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ConfigSpeechToTextSettingRelatedControllerType::GetMsgTypeForNonThreadedOnlyTranscribedMessages => {
|
|
|
|
|
let value = &room_settings.speech_to_text.msg_type_for_non_threaded_only_transcribed_messages;
|
|
|
|
|
setting_get::<SpeechToTextMessageTypeForNonThreadedOnlyTranscribedMessages>(bot, message_context, value).await
|
|
|
|
|
}
|
|
|
|
|
ConfigSpeechToTextSettingRelatedControllerType::SetMsgTypeForNonThreadedOnlyTranscribedMessages(value) => {
|
|
|
|
|
let value = value.to_owned();
|
|
|
|
|
|
|
|
|
|
let setter_callback = Box::new(move |room_settings: &mut RoomSettings| {
|
|
|
|
|
room_settings.speech_to_text.msg_type_for_non_threaded_only_transcribed_messages = value;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
match config_type {
|
|
|
|
|
SettingsStorageSource::Room => {
|
|
|
|
|
room_setting_set::<SpeechToTextMessageTypeForNonThreadedOnlyTranscribedMessages>(
|
|
|
|
|
bot,
|
|
|
|
|
message_context,
|
|
|
|
|
&value,
|
|
|
|
|
setter_callback,
|
|
|
|
|
)
|
|
|
|
|
.await
|
|
|
|
|
}
|
|
|
|
|
SettingsStorageSource::Global => {
|
|
|
|
|
global_setting_set::<SpeechToTextMessageTypeForNonThreadedOnlyTranscribedMessages>(
|
|
|
|
|
bot,
|
|
|
|
|
message_context,
|
|
|
|
|
&value,
|
|
|
|
|
setter_callback,
|
|
|
|
|
)
|
|
|
|
|
.await
|
|
|
|
|
}
|
2024-09-12 13:44:06 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ConfigSpeechToTextSettingRelatedControllerType::GetLanguage => {
|
|
|
|
|
let value = &room_settings.speech_to_text.language;
|
|
|
|
|
setting_get::<String>(bot, message_context, value).await
|
|
|
|
|
}
|
|
|
|
|
ConfigSpeechToTextSettingRelatedControllerType::SetLanguage(value) => {
|
|
|
|
|
let value = value.to_owned();
|
|
|
|
|
|
|
|
|
|
let value_setter = value.clone();
|
|
|
|
|
let setter_callback = Box::new(move |room_settings: &mut RoomSettings| {
|
|
|
|
|
room_settings.speech_to_text.language = value_setter;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
match config_type {
|
|
|
|
|
SettingsStorageSource::Room => {
|
|
|
|
|
room_setting_set::<String>(bot, message_context, &value, setter_callback).await
|
|
|
|
|
}
|
|
|
|
|
SettingsStorageSource::Global => {
|
|
|
|
|
global_setting_set::<String>(bot, message_context, &value, setter_callback)
|
|
|
|
|
.await
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|