From e65059e540fabab895ec3916742f30fb73fede12 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 22 Sep 2023 15:49:51 +0300 Subject: [PATCH] Add SetAuthorizationTtlOnServerLogEvent. --- td/telegram/AccountManager.cpp | 38 ++++++++++++++++++++++++++++++++- td/telegram/AccountManager.h | 3 +++ td/telegram/TdDb.cpp | 1 + td/telegram/logevent/LogEvent.h | 1 + 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/td/telegram/AccountManager.cpp b/td/telegram/AccountManager.cpp index 84747eeb2..2f8acd947 100644 --- a/td/telegram/AccountManager.cpp +++ b/td/telegram/AccountManager.cpp @@ -1012,10 +1012,39 @@ void AccountManager::toggle_session_can_accept_secret_chats(int64 session_id, bo std::move(promise)); } -void AccountManager::set_inactive_session_ttl_days(int32 authorization_ttl_days, Promise &&promise) { +class AccountManager::SetAuthorizationTtlOnServerLogEvent { + public: + int32 authorization_ttl_days_; + + template + void store(StorerT &storer) const { + td::store(authorization_ttl_days_, storer); + } + + template + void parse(ParserT &parser) { + td::parse(authorization_ttl_days_, parser); + } +}; + +void AccountManager::set_authorization_ttl_on_server(int32 authorization_ttl_days, uint64 log_event_id, + Promise &&promise) { + if (log_event_id == 0) { + SetAuthorizationTtlOnServerLogEvent log_event{authorization_ttl_days}; + log_event_id = binlog_add(G()->td_db()->get_binlog(), LogEvent::HandlerType::SetAuthorizationTtlOnServer, + get_log_event_storer(log_event)); + } + + auto new_promise = get_erase_log_event_promise(log_event_id, std::move(promise)); + promise = std::move(new_promise); // to prevent self-move + td_->create_handler(std::move(promise))->send(authorization_ttl_days); } +void AccountManager::set_inactive_session_ttl_days(int32 authorization_ttl_days, Promise &&promise) { + set_authorization_ttl_on_server(authorization_ttl_days, 0, std::move(promise)); +} + void AccountManager::get_connected_websites(Promise> &&promise) { td_->create_handler(std::move(promise))->send(); } @@ -1183,6 +1212,13 @@ void AccountManager::on_binlog_events(vector &&events) { set_account_ttl_on_server(log_event.account_ttl_, event.id_, Auto()); break; } + case LogEvent::HandlerType::SetAuthorizationTtlOnServer: { + SetAuthorizationTtlOnServerLogEvent log_event; + log_event_parse(log_event, event.get_data()).ensure(); + + set_authorization_ttl_on_server(log_event.authorization_ttl_days_, event.id_, Auto()); + break; + } case LogEvent::HandlerType::SetDefaultHistoryTtlOnServer: { SetDefaultHistoryTtlOnServerLogEvent log_event; log_event_parse(log_event, event.get_data()).ensure(); diff --git a/td/telegram/AccountManager.h b/td/telegram/AccountManager.h index 44883727b..a228a6b3a 100644 --- a/td/telegram/AccountManager.h +++ b/td/telegram/AccountManager.h @@ -82,6 +82,7 @@ class AccountManager final : public Actor { class ResetAuthorizationOnServerLogEvent; class ResetAuthorizationsOnServerLogEvent; class SetAccountTtlOnServerLogEvent; + class SetAuthorizationTtlOnServerLogEvent; class SetDefaultHistoryTtlOnServerLogEvent; void start_up() final; @@ -113,6 +114,8 @@ class AccountManager final : public Actor { void set_account_ttl_on_server(int32 account_ttl, uint64 log_event_id, Promise &&promise); + void set_authorization_ttl_on_server(int32 authorization_ttl_days, uint64 log_event_id, Promise &&promise); + void set_default_history_ttl_on_server(int32 message_ttl, uint64 log_event_id, Promise &&promise); Td *td_; diff --git a/td/telegram/TdDb.cpp b/td/telegram/TdDb.cpp index 883cc6293..614d9b2e5 100644 --- a/td/telegram/TdDb.cpp +++ b/td/telegram/TdDb.cpp @@ -149,6 +149,7 @@ Status init_binlog(Binlog &binlog, string path, BinlogKeyValue &binlog_p case LogEvent::HandlerType::ResetAuthorizationsOnServer: case LogEvent::HandlerType::SetDefaultHistoryTtlOnServer: case LogEvent::HandlerType::SetAccountTtlOnServer: + case LogEvent::HandlerType::SetAuthorizationTtlOnServer: events.to_account_manager.push_back(event.clone()); break; case LogEvent::HandlerType::BinlogPmcMagic: diff --git a/td/telegram/logevent/LogEvent.h b/td/telegram/logevent/LogEvent.h index 5761cd59b..d6e3706b5 100644 --- a/td/telegram/logevent/LogEvent.h +++ b/td/telegram/logevent/LogEvent.h @@ -117,6 +117,7 @@ class LogEvent { ResetAuthorizationsOnServer = 0x502, SetDefaultHistoryTtlOnServer = 0x503, SetAccountTtlOnServer = 0x504, + SetAuthorizationTtlOnServer = 0x505, ConfigPmcMagic = 0x1f18, BinlogPmcMagic = 0x4327 };