From a59201f913b7731bacbc1928156d9867a95a4a85 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 15 Apr 2022 21:19:15 +0300 Subject: [PATCH] Reload all notification sounds if list is changed unpredictably. --- td/telegram/NotificationSettingsManager.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/td/telegram/NotificationSettingsManager.cpp b/td/telegram/NotificationSettingsManager.cpp index d2b0bdc6f..e65a7d2b0 100644 --- a/td/telegram/NotificationSettingsManager.cpp +++ b/td/telegram/NotificationSettingsManager.cpp @@ -9,6 +9,7 @@ #include "td/telegram/AccessRights.h" #include "td/telegram/AudiosManager.h" #include "td/telegram/AuthManager.h" +#include "td/telegram/ConfigShared.h" #include "td/telegram/ContactsManager.h" #include "td/telegram/DocumentsManager.h" #include "td/telegram/FileReferenceManager.h" @@ -1050,6 +1051,15 @@ void NotificationSettingsManager::on_remove_saved_ringtone(int64 ringtone_id, Pr CHECK(are_saved_ringtones_loaded_); + auto max_count = G()->shared_config().get_option_integer("notification_sound_count_max"); + if (saved_ringtone_file_ids_.size() >= static_cast(max_count)) { + // reload all saved ringtones to get ringtones besides the limit + return reload_saved_ringtones(PromiseCreator::lambda([promise = std::move(promise)](Result &&result) mutable { + // ignore errors + promise.set_value(Unit()); + })); + } + for (auto it = saved_ringtone_file_ids_.begin(); it != saved_ringtone_file_ids_.begin(); ++it) { auto file_view = td_->file_manager_->get_file_view(*it); CHECK(!file_view.empty());