Excluded self-destructing media from saving selected files.

Related commit: 491e7725df.
This commit is contained in:
23rd
2026-09-04 01:18:48 +03:00
parent 3e77dd7324
commit 893d5ea3df

View File

@@ -40,19 +40,21 @@ namespace {
using Documents = std::vector<std::pair<not_null<DocumentData*>, FullMsgId>>;
using Photos = std::vector<std::pair<not_null<PhotoData*>, FullMsgId>>;
[[nodiscard]] bool Added(
[[nodiscard]] bool Collected(
HistoryItem *item,
Documents &documents,
Photos &photos) {
if (item && !item->forbidsForward()) {
if (const auto media = item->media()) {
if (const auto photo = media->photo()) {
photos.emplace_back(photo, item->fullId());
return true;
} else if (const auto document = media->document()) {
documents.emplace_back(document, item->fullId());
return true;
}
if (!item) {
return false;
} else if (item->forbidsSaving()) {
return true;
} else if (const auto media = item->media()) {
if (const auto photo = media->photo()) {
photos.emplace_back(photo, item->fullId());
return true;
} else if (const auto document = media->document()) {
documents.emplace_back(document, item->fullId());
return true;
}
}
return false;
@@ -246,10 +248,13 @@ void AddDownloadFilesAction(
const auto &id = selectedItem.msgId;
const auto item = window->session().data().message(id);
if (!Added(item, docs, photos)) {
if (!Collected(item, docs, photos)) {
return;
}
}
if (docs.empty() && photos.empty()) {
return;
}
const auto done = [weak = base::make_weak(list)] {
if (const auto strong = weak.get()) {
strong->cancelSelection();
@@ -269,10 +274,13 @@ void AddDownloadFilesAction(
auto docs = Documents();
auto photos = Photos();
for (const auto &item : items) {
if (!Added(item, docs, photos)) {
if (!Collected(item, docs, photos)) {
return;
}
}
if (docs.empty() && photos.empty()) {
return;
}
const auto done = [weak = base::make_weak(list)] {
if (const auto strong = weak.get()) {
strong->clearSelected();