Add remove_premium_custom_emoji_entities.
This commit is contained in:
parent
e601012e9f
commit
36c6b84ec8
|
@ -3652,7 +3652,7 @@ vector<MessageEntity> get_message_entities(const Td *td,
|
||||||
}
|
}
|
||||||
case secret_api::messageEntityCustomEmoji::ID: {
|
case secret_api::messageEntityCustomEmoji::ID: {
|
||||||
auto entity = static_cast<const secret_api::messageEntityCustomEmoji *>(secret_entity.get());
|
auto entity = static_cast<const secret_api::messageEntityCustomEmoji *>(secret_entity.get());
|
||||||
if (is_premium || !td->stickers_manager_->is_premium_custom_emoji(entity->document_id_)) {
|
if (is_premium || !td->stickers_manager_->is_premium_custom_emoji(entity->document_id_, false)) {
|
||||||
entities.emplace_back(MessageEntity::Type::CustomEmoji, entity->offset_, entity->length_,
|
entities.emplace_back(MessageEntity::Type::CustomEmoji, entity->offset_, entity->length_,
|
||||||
entity->document_id_);
|
entity->document_id_);
|
||||||
}
|
}
|
||||||
|
@ -4406,6 +4406,13 @@ vector<tl_object_ptr<telegram_api::MessageEntity>> get_input_message_entities(co
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void remove_premium_custom_emoji_entities(const Td *td, vector<MessageEntity> &entities, bool remove_unknown) {
|
||||||
|
td::remove_if(entities, [&](const MessageEntity &entity) {
|
||||||
|
return entity.type == MessageEntity::Type::CustomEmoji &&
|
||||||
|
td->stickers_manager_->is_premium_custom_emoji(entity.document_id, remove_unknown);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void remove_unallowed_entities(const Td *td, FormattedText &text, DialogId dialog_id) {
|
void remove_unallowed_entities(const Td *td, FormattedText &text, DialogId dialog_id) {
|
||||||
if (text.entities.empty()) {
|
if (text.entities.empty()) {
|
||||||
return;
|
return;
|
||||||
|
@ -4432,11 +4439,7 @@ void remove_unallowed_entities(const Td *td, FormattedText &text, DialogId dialo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!G()->shared_config().get_option_boolean("is_premium")) {
|
if (!G()->shared_config().get_option_boolean("is_premium")) {
|
||||||
// remove premium custom emoji
|
remove_premium_custom_emoji_entities(td, text.entities, false);
|
||||||
td::remove_if(text.entities, [td](const MessageEntity &entity) {
|
|
||||||
return entity.type == MessageEntity::Type::CustomEmoji &&
|
|
||||||
td->stickers_manager_->is_premium_custom_emoji(entity.document_id);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -151,6 +151,8 @@ vector<tl_object_ptr<td_api::textEntity>> get_text_entities_object(const vector<
|
||||||
td_api::object_ptr<td_api::formattedText> get_formatted_text_object(const FormattedText &text, bool skip_bot_commands,
|
td_api::object_ptr<td_api::formattedText> get_formatted_text_object(const FormattedText &text, bool skip_bot_commands,
|
||||||
int32 max_media_timestamp);
|
int32 max_media_timestamp);
|
||||||
|
|
||||||
|
void remove_premium_custom_emoji_entities(const Td *td, vector<MessageEntity> &entities, bool remove_unknown);
|
||||||
|
|
||||||
void remove_unallowed_entities(const Td *td, FormattedText &text, DialogId dialog_id);
|
void remove_unallowed_entities(const Td *td, FormattedText &text, DialogId dialog_id);
|
||||||
|
|
||||||
vector<MessageEntity> find_entities(Slice text, bool skip_bot_commands, bool skip_media_timestamps);
|
vector<MessageEntity> find_entities(Slice text, bool skip_bot_commands, bool skip_media_timestamps);
|
||||||
|
|
|
@ -1692,16 +1692,15 @@ StickerType StickersManager::get_sticker_type(FileId file_id) const {
|
||||||
return sticker->type;
|
return sticker->type;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool StickersManager::is_premium_custom_emoji(int64 custom_emoji_id) const {
|
bool StickersManager::is_premium_custom_emoji(int64 custom_emoji_id, bool default_result) const {
|
||||||
auto it = custom_emoji_to_sticker_id_.find(custom_emoji_id);
|
auto it = custom_emoji_to_sticker_id_.find(custom_emoji_id);
|
||||||
if (it == custom_emoji_to_sticker_id_.end()) {
|
if (it == custom_emoji_to_sticker_id_.end()) {
|
||||||
// pretend that the unknown custom emoji isn't a premium
|
return default_result;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
const Sticker *s = get_sticker(it->second);
|
const Sticker *s = get_sticker(it->second);
|
||||||
if (s == nullptr) {
|
if (s == nullptr) {
|
||||||
LOG(ERROR) << "Failed to find custom emoji sticker " << it->second;
|
LOG(ERROR) << "Failed to find custom emoji sticker " << it->second;
|
||||||
return false;
|
return default_result;
|
||||||
}
|
}
|
||||||
return s->is_premium;
|
return s->is_premium;
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,7 @@ class StickersManager final : public Actor {
|
||||||
|
|
||||||
StickerType get_sticker_type(FileId file_id) const;
|
StickerType get_sticker_type(FileId file_id) const;
|
||||||
|
|
||||||
bool is_premium_custom_emoji(int64 custom_emoji_id) const;
|
bool is_premium_custom_emoji(int64 custom_emoji_id, bool default_result) const;
|
||||||
|
|
||||||
tl_object_ptr<td_api::sticker> get_sticker_object(FileId file_id, bool for_animated_emoji = false,
|
tl_object_ptr<td_api::sticker> get_sticker_object(FileId file_id, bool for_animated_emoji = false,
|
||||||
bool for_clicked_animated_emoji = false) const;
|
bool for_clicked_animated_emoji = false) const;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user