Improve language code processing in searchEmojis.

GitOrigin-RevId: 9c5de24f89a1614a2cd058185156678a0b0049c4
This commit is contained in:
levlam 2020-10-01 17:21:26 +03:00
parent c332f26352
commit c6cdfb377c
2 changed files with 14 additions and 9 deletions

View File

@ -242,7 +242,7 @@ string LanguagePackManager::get_main_language_code() {
if (language_pack_.empty() || language_code_.empty()) {
return "en";
}
if (language_code_.size() <= 2) {
if (language_code_.size() == 2) {
return language_code_;
}
@ -267,7 +267,8 @@ string LanguagePackManager::get_main_language_code() {
}
if (info == nullptr) {
LOG(ERROR) << "Failed to find information about chosen language " << language_code_;
LOG(WARNING) << "Failed to find information about chosen language " << language_code_
<< ", ensure that valid language pack ID is used";
if (!is_custom_language_code(language_code_)) {
search_language_info(language_code_, Auto());
}
@ -308,11 +309,12 @@ vector<string> LanguagePackManager::get_used_language_codes() {
}
vector<string> result;
if (language_code_.size() <= 2) {
if (language_code_.size() == 2) {
result.push_back(language_code_);
}
if (info == nullptr) {
LOG(ERROR) << "Failed to find information about chosen language " << language_code_;
LOG(WARNING) << "Failed to find information about chosen language " << language_code_
<< ", ensure that valid language pack ID is used";
if (!is_custom_language_code(language_code_)) {
search_language_info(language_code_, Auto());
}

View File

@ -5879,12 +5879,14 @@ vector<string> StickersManager::get_emoji_language_codes(const vector<string> &i
Promise<Unit> &promise) {
vector<string> language_codes = td_->language_pack_manager_->get_actor_unsafe()->get_used_language_codes();
auto system_language_code = G()->mtproto_header().get_system_language_code();
if (!system_language_code.empty() && system_language_code.find('$') == string::npos) {
language_codes.push_back(system_language_code);
if (system_language_code.size() >= 2 && system_language_code.find('$') == string::npos &&
(system_language_code.size() == 2 || system_language_code[2] == '-')) {
language_codes.push_back(system_language_code.substr(0, 2));
}
for (auto &input_language_code : input_language_codes) {
if (!input_language_code.empty() && input_language_code.find('$') == string::npos) {
language_codes.push_back(input_language_code);
if (input_language_code.size() >= 2 && input_language_code.find('$') == string::npos &&
(input_language_code.size() == 2 || input_language_code[2] == '-')) {
language_codes.push_back(input_language_code.substr(0, 2));
}
}
if (!text.empty()) {
@ -5904,7 +5906,7 @@ vector<string> StickersManager::get_emoji_language_codes(const vector<string> &i
}
if (language_codes.empty()) {
LOG(ERROR) << "List of language codes is empty";
LOG(INFO) << "List of language codes is empty";
language_codes.push_back("en");
}
std::sort(language_codes.begin(), language_codes.end());
@ -5919,6 +5921,7 @@ vector<string> StickersManager::get_emoji_language_codes(const vector<string> &i
if (it->second.empty()) {
load_language_codes(std::move(language_codes), std::move(key), std::move(promise));
} else {
LOG(DEBUG) << "Have emoji language codes " << it->second;
double now = Time::now_cached();
for (auto &language_code : it->second) {
double last_difference_time = get_emoji_language_code_last_difference_time(language_code);