Asynchronously reload emoji keywords languages after restart.
GitOrigin-RevId: 1f24d44c715d96aead91402fdc7f6d7abf04d041
This commit is contained in:
parent
3659757dc3
commit
dcb15d0a13
@ -4948,8 +4948,8 @@ void StickersManager::on_get_language_codes(const string &key, Result<vector<str
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto language_codes = result.move_as_ok();
|
auto language_codes = result.move_as_ok();
|
||||||
LOG(INFO) << "Receive language codes " << language_codes << " for emojis search";
|
LOG(INFO) << "Receive language codes " << language_codes << " for emojis search with key " << key;
|
||||||
td::remove_if(language_codes, [](const auto &language_code) {
|
td::remove_if(language_codes, [](const string &language_code) {
|
||||||
if (language_code.empty() || language_code.find('$') != string::npos) {
|
if (language_code.empty() || language_code.find('$') != string::npos) {
|
||||||
LOG(ERROR) << "Receive language_code \"" << language_code << '"';
|
LOG(ERROR) << "Receive language_code \"" << language_code << '"';
|
||||||
return true;
|
return true;
|
||||||
@ -4963,10 +4963,13 @@ void StickersManager::on_get_language_codes(const string &key, Result<vector<str
|
|||||||
std::sort(language_codes.begin(), language_codes.end());
|
std::sort(language_codes.begin(), language_codes.end());
|
||||||
language_codes.erase(std::unique(language_codes.begin(), language_codes.end()), language_codes.end());
|
language_codes.erase(std::unique(language_codes.begin(), language_codes.end()), language_codes.end());
|
||||||
|
|
||||||
G()->td_db()->get_sqlite_pmc()->set(key, implode(language_codes, '$'), Auto());
|
|
||||||
auto it = emoji_language_codes_.find(key);
|
auto it = emoji_language_codes_.find(key);
|
||||||
CHECK(it != emoji_language_codes_.end());
|
CHECK(it != emoji_language_codes_.end());
|
||||||
it->second = std::move(language_codes);
|
if (it->second != language_codes) {
|
||||||
|
LOG(INFO) << "Update emoji language codes for " << key << " to " << language_codes;
|
||||||
|
G()->td_db()->get_sqlite_pmc()->set(key, implode(language_codes, '$'), Auto());
|
||||||
|
it->second = std::move(language_codes);
|
||||||
|
}
|
||||||
|
|
||||||
for (auto &promise : promises) {
|
for (auto &promise : promises) {
|
||||||
promise.set_value(Unit());
|
promise.set_value(Unit());
|
||||||
@ -5007,6 +5010,9 @@ vector<string> StickersManager::get_emoji_language_codes(const string &input_lan
|
|||||||
load_emoji_keywords_difference(language_code);
|
load_emoji_keywords_difference(language_code);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (reloaded_emoji_keywords_.insert(key).second) {
|
||||||
|
load_language_codes(std::move(language_codes), std::move(key), Auto());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return it->second;
|
return it->second;
|
||||||
}
|
}
|
||||||
|
@ -613,6 +613,7 @@ class StickersManager : public Actor {
|
|||||||
std::unordered_map<string, vector<string>> emoji_language_codes_;
|
std::unordered_map<string, vector<string>> emoji_language_codes_;
|
||||||
std::unordered_map<string, int32> emoji_language_code_versions_;
|
std::unordered_map<string, int32> emoji_language_code_versions_;
|
||||||
std::unordered_map<string, double> emoji_language_code_last_difference_times_;
|
std::unordered_map<string, double> emoji_language_code_last_difference_times_;
|
||||||
|
std::unordered_set<string> reloaded_emoji_keywords_;
|
||||||
std::unordered_map<string, vector<Promise<Unit>>> load_emoji_keywords_queries_;
|
std::unordered_map<string, vector<Promise<Unit>>> load_emoji_keywords_queries_;
|
||||||
std::unordered_map<string, vector<Promise<Unit>>> load_language_codes_queries_;
|
std::unordered_map<string, vector<Promise<Unit>>> load_language_codes_queries_;
|
||||||
std::unordered_map<int64, string> emoji_suggestions_urls_;
|
std::unordered_map<int64, string> emoji_suggestions_urls_;
|
||||||
|
Loading…
Reference in New Issue
Block a user