Added ability to delete added poll answer.

This commit is contained in:
23rd
2026-03-23 17:54:53 +03:00
parent 7a5eefcc70
commit 8b37591882
5 changed files with 47 additions and 0 deletions
+1
View File
@@ -4978,6 +4978,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_context_reply_to_task" = "Reply to Task";
"lng_context_reply_to_poll_option" = "Reply to Option";
"lng_context_copy_poll_option" = "Copy Option";
"lng_context_delete_poll_option" = "Delete Option";
"lng_context_edit_msg" = "Edit";
"lng_context_draw" = "Edit Image";
"lng_context_add_factcheck" = "Add Fact Check";
+21
View File
@@ -231,6 +231,27 @@ void Polls::addAnswer(
_pollAddAnswerRequestIds.emplace(itemId, requestId);
}
void Polls::deleteAnswer(FullMsgId itemId, const QByteArray &option) {
if (_pollVotesRequestIds.contains(itemId)) {
return;
}
const auto item = _session->data().message(itemId);
if (!item) {
return;
}
const auto requestId = _api.request(MTPmessages_DeletePollAnswer(
item->history()->peer->input(),
MTP_int(item->id),
MTP_bytes(option)
)).done([=](const MTPUpdates &result) {
_pollVotesRequestIds.erase(itemId);
_session->updates().applyUpdates(result);
}).fail([=] {
_pollVotesRequestIds.erase(itemId);
}).send();
_pollVotesRequestIds.emplace(itemId, requestId);
}
void Polls::close(not_null<HistoryItem*> item) {
const auto itemId = item->fullId();
if (_pollCloseRequestIds.contains(itemId)) {
+1
View File
@@ -42,6 +42,7 @@ public:
const PollMedia &media,
Fn<void()> done,
Fn<void(QString)> fail);
void deleteAnswer(FullMsgId itemId, const QByteArray &option);
void close(not_null<HistoryItem*> item);
void reloadResults(not_null<HistoryItem*> item);
@@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#include "history/history_inner_widget.h"
#include "api/api_polls.h"
#include "chat_helpers/stickers_emoji_pack.h"
#include "core/application.h"
#include "core/file_utilities.h"
@@ -2995,6 +2996,18 @@ void HistoryInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
TextUtilities::SetClipboardText(text);
},
&st::menuIconCopy);
if (poll->creator() && a->addedDate) {
const auto itemId = item->fullId();
const auto option = pollOptionLink;
_menu->addAction(
tr::lng_context_delete_poll_option(tr::now),
[=] {
poll->session().api().polls().deleteAnswer(
itemId,
option);
},
&st::menuIconDelete);
}
}
}
}
@@ -1323,6 +1323,17 @@ base::unique_qptr<Ui::PopupMenu> FillContextMenu(
TextUtilities::SetClipboardText(text);
},
&st::menuIconCopy);
if (poll->creator() && a->addedDate) {
const auto itemId = item->fullId();
result->addAction(
tr::lng_context_delete_poll_option(tr::now),
[=] {
poll->session().api().polls().deleteAnswer(
itemId,
pollOption);
},
&st::menuIconDelete);
}
}
}
}