diff --git a/Telegram/SourceFiles/history/history_inner_widget.cpp b/Telegram/SourceFiles/history/history_inner_widget.cpp index d6c64d7927..cf06a30026 100644 --- a/Telegram/SourceFiles/history/history_inner_widget.cpp +++ b/Telegram/SourceFiles/history/history_inner_widget.cpp @@ -81,6 +81,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/qt/qt_key_modifiers.h" #include "base/unixtime.h" #include "base/call_delayed.h" +#include "main/main_app_config.h" #include "main/main_session.h" #include "main/main_session_settings.h" #include "mainwidget.h" @@ -3003,7 +3004,24 @@ void HistoryInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) { TextUtilities::SetClipboardText(text); }, &st::menuIconCopy); - if (poll->creator() && a->addedDate) { + const auto canDelete = [&] { + if (!a->addedDate) { + return false; + } + if (poll->creator()) { + return true; + } + if (a->addedBy + && a->addedBy->isSelf()) { + const auto period = poll->session() + .appConfig() + .pollAnswerDeletePeriod(); + return (base::unixtime::now() - a->addedDate) + < period; + } + return false; + }(); + if (canDelete) { const auto itemId = item->fullId(); const auto option = pollOptionLink; _menu->addAction( diff --git a/Telegram/SourceFiles/history/view/history_view_context_menu.cpp b/Telegram/SourceFiles/history/view/history_view_context_menu.cpp index 8d9d55d297..b9813a30ea 100644 --- a/Telegram/SourceFiles/history/view/history_view_context_menu.cpp +++ b/Telegram/SourceFiles/history/view/history_view_context_menu.cpp @@ -87,6 +87,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "window/window_session_controller.h" #include "lang/lang_keys.h" #include "core/application.h" +#include "main/main_app_config.h" #include "main/main_session.h" #include "main/main_session_settings.h" #include "spellcheck/spellcheck_types.h" @@ -1323,7 +1324,24 @@ base::unique_qptr FillContextMenu( TextUtilities::SetClipboardText(text); }, &st::menuIconCopy); - if (poll->creator() && a->addedDate) { + const auto canDelete = [&] { + if (!a->addedDate) { + return false; + } + if (poll->creator()) { + return true; + } + if (a->addedBy + && a->addedBy->isSelf()) { + const auto period = poll->session() + .appConfig() + .pollAnswerDeletePeriod(); + return (base::unixtime::now() - a->addedDate) + < period; + } + return false; + }(); + if (canDelete) { const auto itemId = item->fullId(); result->addAction( tr::lng_context_delete_poll_option(tr::now), diff --git a/Telegram/SourceFiles/main/main_app_config.cpp b/Telegram/SourceFiles/main/main_app_config.cpp index 22241cc40e..2a92c61a17 100644 --- a/Telegram/SourceFiles/main/main_app_config.cpp +++ b/Telegram/SourceFiles/main/main_app_config.cpp @@ -208,6 +208,10 @@ int AppConfig::pollOptionsLimit() const { return get(u"poll_answers_max"_q, 12); } +int AppConfig::pollAnswerDeletePeriod() const { + return get(u"poll_answer_delete_period"_q, 300); +} + int AppConfig::todoListItemsLimit() const { return get( u"todo_items_max"_q, diff --git a/Telegram/SourceFiles/main/main_app_config.h b/Telegram/SourceFiles/main/main_app_config.h index 7200e003eb..5d2353dd45 100644 --- a/Telegram/SourceFiles/main/main_app_config.h +++ b/Telegram/SourceFiles/main/main_app_config.h @@ -105,6 +105,7 @@ public: [[nodiscard]] int giftResaleNanoTonThousandths() const; [[nodiscard]] int pollOptionsLimit() const; + [[nodiscard]] int pollAnswerDeletePeriod() const; [[nodiscard]] int todoListItemsLimit() const; [[nodiscard]] int todoListTitleLimit() const; [[nodiscard]] int todoListItemTextLimit() const;