Use new config constants.

GitOrigin-RevId: 6f0d02a9ca91e7db2d416eb89861080ff9f6f30c
This commit is contained in:
levlam 2018-03-04 23:50:38 +03:00
parent a3717481ed
commit c1e3f2d65d
4 changed files with 29 additions and 12 deletions

View File

@ -679,6 +679,12 @@ void ConfigManager::process_config(tl_object_ptr<telegram_api::config> config) {
} }
} }
shared_config.set_option_integer("edit_time_limit", config->edit_time_limit_);
shared_config.set_option_boolean("revoke_pm_inbox",
(config->flags_ & telegram_api::config::REVOKE_PM_INBOX_MASK) != 0);
shared_config.set_option_integer("revoke_time_limit", config->revoke_time_limit_);
shared_config.set_option_integer("revoke_pm_time_limit", config->revoke_pm_time_limit_);
shared_config.set_option_integer("rating_e_decay", config->rating_e_decay_); shared_config.set_option_integer("rating_e_decay", config->rating_e_decay_);
if (is_from_main_dc) { if (is_from_main_dc) {

View File

@ -7411,8 +7411,13 @@ bool MessagesManager::can_revoke_message(DialogId dialog_id, const Message *m) c
CHECK(m->message_id.is_server()); CHECK(m->message_id.is_server());
bool is_appointed_administrator = false; bool is_appointed_administrator = false;
bool can_revoke_incoming = false;
const int32 DEFAULT_REVOKE_TIME_LIMIT = 2 * 86400;
int32 revoke_time_limit = G()->shared_config().get_option_integer("revoke_time_limit", DEFAULT_REVOKE_TIME_LIMIT);
switch (dialog_id.get_type()) { switch (dialog_id.get_type()) {
case DialogType::User: case DialogType::User:
can_revoke_incoming = G()->shared_config().get_option_boolean("revoke_pm_inbox");
revoke_time_limit = G()->shared_config().get_option_integer("revoke_pm_time_limit", DEFAULT_REVOKE_TIME_LIMIT);
break; break;
case DialogType::Chat: case DialogType::Chat:
is_appointed_administrator = td_->contacts_manager_->is_appointed_chat_administrator(dialog_id.get_chat_id()); is_appointed_administrator = td_->contacts_manager_->is_appointed_chat_administrator(dialog_id.get_chat_id());
@ -7428,9 +7433,9 @@ bool MessagesManager::can_revoke_message(DialogId dialog_id, const Message *m) c
return false; return false;
} }
// TODO use const from the config return (((m->is_outgoing || can_revoke_incoming) && !is_service_message_content(m->content->get_id())) ||
return ((m->is_outgoing && !is_service_message_content(m->content->get_id())) || is_appointed_administrator) && is_appointed_administrator) &&
G()->unix_time_cached() < m->date + 2 * 86400; G()->unix_time_cached() - m->date <= revoke_time_limit;
} }
void MessagesManager::delete_messages(DialogId dialog_id, const vector<MessageId> &input_message_ids, bool revoke, void MessagesManager::delete_messages(DialogId dialog_id, const vector<MessageId> &input_message_ids, bool revoke,
@ -16583,8 +16588,9 @@ bool MessagesManager::can_edit_message(DialogId dialog_id, const Message *m, boo
return false; return false;
} }
// TODO use const from the config const int32 DEFAULT_EDIT_TIME_LIMIT = 2 * 86400;
if (has_edit_time_limit && G()->unix_time_cached() - m->date >= 2 * 86400 + (is_editing ? 300 : 0)) { int32 edit_time_limit = G()->shared_config().get_option_integer("edit_time_limit", DEFAULT_EDIT_TIME_LIMIT);
if (has_edit_time_limit && G()->unix_time_cached() - m->date >= edit_time_limit + (is_editing ? 300 : 0)) {
return false; return false;
} }

View File

@ -3897,6 +3897,13 @@ void Td::on_result(NetQueryPtr query) {
handler->on_result(std::move(query)); handler->on_result(std::move(query));
} }
bool Td::is_internal_config_option(Slice name) {
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 == "revoke_pm_time_limit" || name == "rating_e_decay" || name == "saved_animations_limit" ||
name == "auth";
}
void Td::on_config_option_updated(const string &name) { void Td::on_config_option_updated(const string &name) {
if (close_flag_) { if (close_flag_) {
return; return;
@ -3918,8 +3925,7 @@ void Td::on_config_option_updated(const string &name) {
send_closure(storage_manager_, &StorageManager::update_use_storage_optimizer); send_closure(storage_manager_, &StorageManager::update_use_storage_optimizer);
} else if (name == "rating_e_decay") { } else if (name == "rating_e_decay") {
return send_closure(top_dialog_manager_, &TopDialogManager::update_rating_e_decay); return send_closure(top_dialog_manager_, &TopDialogManager::update_rating_e_decay);
} else if (name == "call_ring_timeout_ms" || name == "call_receive_timeout_ms" || } else if (is_internal_config_option(name)) {
name == "channels_read_media_period") {
return; return;
} }
send_closure(actor_id(this), &Td::send_update, send_closure(actor_id(this), &Td::send_update,
@ -4112,14 +4118,11 @@ void Td::clear() {
Timer timer; Timer timer;
if (destroy_flag_) { if (destroy_flag_) {
for (auto &option : G()->shared_config().get_options()) { for (auto &option : G()->shared_config().get_options()) {
if (option.first == "rating_e_decay" || option.first == "saved_animations_limit" || if (!is_internal_config_option(option.first)) {
option.first == "call_receive_timeout_ms" || option.first == "call_ring_timeout_ms" ||
option.first == "channels_read_media_period" || option.first == "auth") {
continue;
}
send_update(make_tl_object<td_api::updateOption>(option.first, make_tl_object<td_api::optionValueEmpty>())); send_update(make_tl_object<td_api::updateOption>(option.first, make_tl_object<td_api::optionValueEmpty>()));
} }
} }
}
LOG(DEBUG) << "Options was cleared " << timer; LOG(DEBUG) << "Options was cleared " << timer;
G()->net_query_creator().stop_check(); G()->net_query_creator().stop_check();

View File

@ -255,6 +255,8 @@ class Td final : public NetQueryCallback {
void clear_handlers(); void clear_handlers();
// void destroy_handler(ResultHandler *handler); // void destroy_handler(ResultHandler *handler);
static bool is_internal_config_option(Slice name);
void on_config_option_updated(const string &name); void on_config_option_updated(const string &name);
static tl_object_ptr<td_api::ConnectionState> get_connection_state_object(StateManager::State state); static tl_object_ptr<td_api::ConnectionState> get_connection_state_object(StateManager::State state);