Support for recent_stickers_limit.
GitOrigin-RevId: f49119eb0703bb03e7c564a4f90a1f91f9c6074b
This commit is contained in:
parent
ae319fa10b
commit
6669bd8c7b
@ -40,10 +40,9 @@ tl_object_ptr<td_api::audio> AudiosManager::get_audio_object(FileId file_id) {
|
|||||||
auto &audio = audios_[file_id];
|
auto &audio = audios_[file_id];
|
||||||
CHECK(audio != nullptr);
|
CHECK(audio != nullptr);
|
||||||
audio->is_changed = false;
|
audio->is_changed = false;
|
||||||
return make_tl_object<td_api::audio>(audio->duration, audio->title, audio->performer, audio->file_name,
|
return make_tl_object<td_api::audio>(
|
||||||
audio->mime_type,
|
audio->duration, audio->title, audio->performer, audio->file_name, audio->mime_type,
|
||||||
get_photo_size_object(td_->file_manager_.get(), &audio->thumbnail),
|
get_photo_size_object(td_->file_manager_.get(), &audio->thumbnail), td_->file_manager_->get_file_object(file_id));
|
||||||
td_->file_manager_->get_file_object(file_id));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FileId AudiosManager::on_get_audio(std::unique_ptr<Audio> new_audio, bool replace) {
|
FileId AudiosManager::on_get_audio(std::unique_ptr<Audio> new_audio, bool replace) {
|
||||||
|
@ -661,6 +661,7 @@ void ConfigManager::process_config(tl_object_ptr<telegram_api::config> config) {
|
|||||||
// Do not save dc_options in config, because it will be interpreted and saved by ConnectionCreator.
|
// Do not save dc_options in config, because it will be interpreted and saved by ConnectionCreator.
|
||||||
send_closure(G()->connection_creator(), &ConnectionCreator::on_dc_options, DcOptions(config->dc_options_));
|
send_closure(G()->connection_creator(), &ConnectionCreator::on_dc_options, DcOptions(config->dc_options_));
|
||||||
|
|
||||||
|
shared_config.set_option_integer("recent_stickers_limit", config->stickers_recent_limit_);
|
||||||
shared_config.set_option_integer("favorite_stickers_limit", config->stickers_faved_limit_);
|
shared_config.set_option_integer("favorite_stickers_limit", config->stickers_faved_limit_);
|
||||||
shared_config.set_option_integer("saved_animations_limit", config->saved_gifs_limit_);
|
shared_config.set_option_integer("saved_animations_limit", config->saved_gifs_limit_);
|
||||||
shared_config.set_option_integer("channels_read_media_period", config->channels_read_media_period_);
|
shared_config.set_option_integer("channels_read_media_period", config->channels_read_media_period_);
|
||||||
|
@ -3546,7 +3546,7 @@ bool StickersManager::add_recent_sticker_impl(bool is_attached, FileId sticker_i
|
|||||||
|
|
||||||
auto it = std::find(sticker_ids.begin(), sticker_ids.end(), sticker_id);
|
auto it = std::find(sticker_ids.begin(), sticker_ids.end(), sticker_id);
|
||||||
if (it == sticker_ids.end()) {
|
if (it == sticker_ids.end()) {
|
||||||
if (sticker_ids.size() == RECENT_STICKERS_LIMIT) {
|
if (static_cast<int32>(sticker_ids.size()) == recent_stickers_limit_) {
|
||||||
sticker_ids.back() = sticker_id;
|
sticker_ids.back() = sticker_id;
|
||||||
} else {
|
} else {
|
||||||
sticker_ids.push_back(sticker_id);
|
sticker_ids.push_back(sticker_id);
|
||||||
@ -3648,6 +3648,23 @@ void StickersManager::send_update_recent_stickers(bool from_database) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StickersManager::on_update_recent_stickers_limit(int32 recent_stickers_limit) {
|
||||||
|
if (recent_stickers_limit != recent_stickers_limit_) {
|
||||||
|
if (recent_stickers_limit > 0) {
|
||||||
|
LOG(INFO) << "Update recent stickers limit to " << recent_stickers_limit;
|
||||||
|
recent_stickers_limit_ = recent_stickers_limit;
|
||||||
|
for (int is_attached = 0; is_attached < 2; is_attached++) {
|
||||||
|
if (static_cast<int32>(recent_sticker_ids_[is_attached].size()) > recent_stickers_limit) {
|
||||||
|
recent_sticker_ids_[is_attached].resize(recent_stickers_limit);
|
||||||
|
send_update_recent_stickers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
LOG(ERROR) << "Receive wrong recent stickers limit = " << recent_stickers_limit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void StickersManager::on_update_favorite_stickers_limit(int32 favorite_stickers_limit) {
|
void StickersManager::on_update_favorite_stickers_limit(int32 favorite_stickers_limit) {
|
||||||
if (favorite_stickers_limit != favorite_stickers_limit_) {
|
if (favorite_stickers_limit != favorite_stickers_limit_) {
|
||||||
if (favorite_stickers_limit > 0) {
|
if (favorite_stickers_limit > 0) {
|
||||||
|
@ -155,6 +155,8 @@ class StickersManager : public Actor {
|
|||||||
|
|
||||||
void clear_recent_stickers(bool is_attached, Promise<Unit> &&promise);
|
void clear_recent_stickers(bool is_attached, Promise<Unit> &&promise);
|
||||||
|
|
||||||
|
void on_update_recent_stickers_limit(int32 recent_stickers_limit);
|
||||||
|
|
||||||
void on_update_favorite_stickers_limit(int32 favorite_stickers_limit);
|
void on_update_favorite_stickers_limit(int32 favorite_stickers_limit);
|
||||||
|
|
||||||
void reload_favorite_stickers(bool force);
|
void reload_favorite_stickers(bool force);
|
||||||
@ -205,7 +207,6 @@ class StickersManager : public Actor {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
static constexpr int32 MAX_FEATURED_STICKER_SET_VIEW_DELAY = 5;
|
static constexpr int32 MAX_FEATURED_STICKER_SET_VIEW_DELAY = 5;
|
||||||
static constexpr size_t RECENT_STICKERS_LIMIT = 30;
|
|
||||||
|
|
||||||
static constexpr int64 MAX_STICKER_FILE_SIZE = 1 << 19; // server side limit
|
static constexpr int64 MAX_STICKER_FILE_SIZE = 1 << 19; // server side limit
|
||||||
static constexpr size_t MAX_STICKER_SET_TITLE_LENGTH = 64; // server side limit
|
static constexpr size_t MAX_STICKER_SET_TITLE_LENGTH = 64; // server side limit
|
||||||
@ -469,7 +470,8 @@ class StickersManager : public Actor {
|
|||||||
std::unordered_set<int64> pending_viewed_featured_sticker_set_ids_;
|
std::unordered_set<int64> pending_viewed_featured_sticker_set_ids_;
|
||||||
Timeout pending_featured_sticker_set_views_timeout_;
|
Timeout pending_featured_sticker_set_views_timeout_;
|
||||||
|
|
||||||
int32 favorite_stickers_limit_ = 200;
|
int32 recent_stickers_limit_ = 200;
|
||||||
|
int32 favorite_stickers_limit_ = 5;
|
||||||
|
|
||||||
struct StickerSetLoadRequest {
|
struct StickerSetLoadRequest {
|
||||||
Promise<Unit> promise;
|
Promise<Unit> promise;
|
||||||
|
@ -3975,7 +3975,7 @@ bool Td::is_internal_config_option(Slice name) {
|
|||||||
return name == "call_ring_timeout_ms" || name == "call_receive_timeout_ms" || name == "channels_read_media_period" ||
|
return name == "call_ring_timeout_ms" || name == "call_receive_timeout_ms" || name == "channels_read_media_period" ||
|
||||||
name == "edit_time_limit" || name == "revoke_pm_inbox" || name == "revoke_time_limit" ||
|
name == "edit_time_limit" || name == "revoke_pm_inbox" || name == "revoke_time_limit" ||
|
||||||
name == "revoke_pm_time_limit" || name == "rating_e_decay" || name == "saved_animations_limit" ||
|
name == "revoke_pm_time_limit" || name == "rating_e_decay" || name == "saved_animations_limit" ||
|
||||||
name == "auth";
|
name == "recent_stickers_limit" || name == "auth";
|
||||||
}
|
}
|
||||||
|
|
||||||
void Td::on_config_option_updated(const string &name) {
|
void Td::on_config_option_updated(const string &name) {
|
||||||
@ -3987,6 +3987,8 @@ void Td::on_config_option_updated(const string &name) {
|
|||||||
return;
|
return;
|
||||||
} else if (name == "saved_animations_limit") {
|
} else if (name == "saved_animations_limit") {
|
||||||
return animations_manager_->on_update_saved_animations_limit(G()->shared_config().get_option_integer(name));
|
return animations_manager_->on_update_saved_animations_limit(G()->shared_config().get_option_integer(name));
|
||||||
|
} else if (name == "recent_stickers_limit") {
|
||||||
|
return stickers_manager_->on_update_recent_stickers_limit(G()->shared_config().get_option_integer(name));
|
||||||
} else if (name == "favorite_stickers_limit") {
|
} else if (name == "favorite_stickers_limit") {
|
||||||
stickers_manager_->on_update_favorite_stickers_limit(G()->shared_config().get_option_integer(name));
|
stickers_manager_->on_update_favorite_stickers_limit(G()->shared_config().get_option_integer(name));
|
||||||
} else if (name == "my_id") {
|
} else if (name == "my_id") {
|
||||||
|
@ -42,11 +42,10 @@ tl_object_ptr<td_api::video> VideosManager::get_video_object(FileId file_id) {
|
|||||||
CHECK(video != nullptr);
|
CHECK(video != nullptr);
|
||||||
video->is_changed = false;
|
video->is_changed = false;
|
||||||
|
|
||||||
return make_tl_object<td_api::video>(video->duration, video->dimensions.width, video->dimensions.height,
|
return make_tl_object<td_api::video>(
|
||||||
video->file_name, video->mime_type, video->has_stickers,
|
video->duration, video->dimensions.width, video->dimensions.height, video->file_name, video->mime_type,
|
||||||
video->supports_streaming,
|
video->has_stickers, video->supports_streaming,
|
||||||
get_photo_size_object(td_->file_manager_.get(), &video->thumbnail),
|
get_photo_size_object(td_->file_manager_.get(), &video->thumbnail), td_->file_manager_->get_file_object(file_id));
|
||||||
td_->file_manager_->get_file_object(file_id));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FileId VideosManager::on_get_video(std::unique_ptr<Video> new_video, bool replace) {
|
FileId VideosManager::on_get_video(std::unique_ptr<Video> new_video, bool replace) {
|
||||||
|
@ -288,7 +288,7 @@ Result<CpuStat> cpu_stat() {
|
|||||||
return Status::Error("Not supported");
|
return Status::Error("Not supported");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
} // namespace td
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if TD_PORT_WINDOWS
|
#if TD_PORT_WINDOWS
|
||||||
|
Loading…
x
Reference in New Issue
Block a user