fix: unified keyboard check logic in common.rs

This commit is contained in:
mcfans
2023-10-30 15:34:01 +08:00
parent 70dd3f323e
commit 6fdce63359
4 changed files with 40 additions and 23 deletions

View File

@@ -977,18 +977,24 @@ pub fn make_privacy_mode_msg(state: back_notification::PrivacyModeState) -> Mess
make_privacy_mode_msg_with_details(state, "".to_owned())
}
pub fn is_keyboard_mode_supported(keyboard_mode: &KeyboardMode, version_number: i64) -> bool {
pub fn is_keyboard_mode_supported(keyboard_mode: &KeyboardMode, version_number: i64, peer_platform: &str) -> bool {
match keyboard_mode {
KeyboardMode::Legacy => true,
KeyboardMode::Map => version_number >= hbb_common::get_version_number("1.2.0"),
KeyboardMode::Map => {
if peer_platform.to_lowercase() == crate::PLATFORM_ANDROID.to_lowercase() {
false
} else {
version_number >= hbb_common::get_version_number("1.2.0")
}
}
KeyboardMode::Translate => version_number >= hbb_common::get_version_number("1.2.0"),
KeyboardMode::Auto => version_number >= hbb_common::get_version_number("1.2.0"),
}
}
pub fn get_supported_keyboard_modes(version: i64) -> Vec<KeyboardMode> {
pub fn get_supported_keyboard_modes(version: i64, peer_platform: &str) -> Vec<KeyboardMode> {
KeyboardMode::iter()
.filter(|&mode| is_keyboard_mode_supported(mode, version))
.filter(|&mode| is_keyboard_mode_supported(mode, version, peer_platform))
.map(|&mode| mode)
.collect::<Vec<_>>()
}