Implement StickersManager::is_premium_custom_emoji.
This commit is contained in:
parent
d361d6e8a1
commit
f26a33b3d3
@ -1693,9 +1693,18 @@ StickerType StickersManager::get_sticker_type(FileId file_id) const {
|
||||
}
|
||||
|
||||
bool StickersManager::is_premium_custom_emoji(int64 custom_emoji_id) const {
|
||||
// TODO
|
||||
auto it = custom_emoji_to_sticker_id_.find(custom_emoji_id);
|
||||
if (it == custom_emoji_to_sticker_id_.end()) {
|
||||
// pretend that unknown custom emoji isn't premium
|
||||
return false;
|
||||
}
|
||||
const Sticker *s = get_sticker(it->second);
|
||||
if (s == nullptr) {
|
||||
LOG(ERROR) << "Failed to find custom emoji sticker " << it->second;
|
||||
return false;
|
||||
}
|
||||
return s->is_premium;
|
||||
}
|
||||
|
||||
int64 StickersManager::get_custom_emoji_id(FileId sticker_id) const {
|
||||
auto sticker_file_view = td_->file_manager_->get_file_view(sticker_id);
|
||||
@ -2409,6 +2418,17 @@ FileId StickersManager::on_get_sticker(unique_ptr<Sticker> new_sticker, bool rep
|
||||
s = std::move(new_sticker);
|
||||
} else if (replace) {
|
||||
CHECK(s->file_id == file_id);
|
||||
|
||||
if (s->type == StickerType::CustomEmoji) {
|
||||
auto custom_emoji_id = get_custom_emoji_id(file_id);
|
||||
if (custom_emoji_id != 0) {
|
||||
auto it = custom_emoji_to_sticker_id_.find(custom_emoji_id);
|
||||
if (it != custom_emoji_to_sticker_id_.end() && it->second == file_id) {
|
||||
custom_emoji_to_sticker_id_.erase(it);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (s->dimensions != new_sticker->dimensions && new_sticker->dimensions.width != 0) {
|
||||
LOG(DEBUG) << "Sticker " << file_id << " dimensions have changed";
|
||||
s->dimensions = new_sticker->dimensions;
|
||||
@ -2451,6 +2471,12 @@ FileId StickersManager::on_get_sticker(unique_ptr<Sticker> new_sticker, bool rep
|
||||
}
|
||||
}
|
||||
|
||||
if (s->type == StickerType::CustomEmoji) {
|
||||
auto custom_emoji_id = get_custom_emoji_id(file_id);
|
||||
if (custom_emoji_id != 0) {
|
||||
custom_emoji_to_sticker_id_[custom_emoji_id] = file_id;
|
||||
}
|
||||
}
|
||||
return file_id;
|
||||
}
|
||||
|
||||
|
@ -977,6 +977,8 @@ class StickersManager final : public Actor {
|
||||
string emoji_sounds_str_;
|
||||
FlatHashMap<string, FileId> emoji_sounds_;
|
||||
|
||||
FlatHashMap<int64, FileId> custom_emoji_to_sticker_id_;
|
||||
|
||||
double animated_emoji_zoom_ = 0.0;
|
||||
|
||||
bool disable_animated_emojis_ = false;
|
||||
|
Loading…
Reference in New Issue
Block a user