Add need_update_dialog_notification_settings.
This commit is contained in:
parent
58d84a1c7e
commit
bc2e23a27f
@ -120,4 +120,26 @@ bool are_default_dialog_notification_settings(const DialogNotificationSettings &
|
|||||||
settings.use_default_disable_mention_notifications;
|
settings.use_default_disable_mention_notifications;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NeedUpdateDialogNotificationSettings need_update_dialog_notification_settings(
|
||||||
|
const DialogNotificationSettings *current_settings, const DialogNotificationSettings &new_settings) {
|
||||||
|
NeedUpdateDialogNotificationSettings result;
|
||||||
|
result.need_update_server = current_settings->mute_until != new_settings.mute_until ||
|
||||||
|
!are_equivalent_notification_sounds(current_settings->sound, new_settings.sound) ||
|
||||||
|
current_settings->show_preview != new_settings.show_preview ||
|
||||||
|
current_settings->use_default_mute_until != new_settings.use_default_mute_until ||
|
||||||
|
current_settings->use_default_show_preview != new_settings.use_default_show_preview;
|
||||||
|
result.need_update_local =
|
||||||
|
current_settings->use_default_disable_pinned_message_notifications !=
|
||||||
|
new_settings.use_default_disable_pinned_message_notifications ||
|
||||||
|
current_settings->disable_pinned_message_notifications != new_settings.disable_pinned_message_notifications ||
|
||||||
|
current_settings->use_default_disable_mention_notifications !=
|
||||||
|
new_settings.use_default_disable_mention_notifications ||
|
||||||
|
current_settings->disable_mention_notifications != new_settings.disable_mention_notifications;
|
||||||
|
result.are_changed = result.need_update_server || result.need_update_local ||
|
||||||
|
current_settings->is_synchronized != new_settings.is_synchronized ||
|
||||||
|
current_settings->is_use_default_fixed != new_settings.is_use_default_fixed ||
|
||||||
|
are_different_equivalent_notification_sounds(current_settings->sound, new_settings.sound);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace td
|
} // namespace td
|
||||||
|
@ -69,4 +69,12 @@ DialogNotificationSettings get_dialog_notification_settings(tl_object_ptr<telegr
|
|||||||
|
|
||||||
bool are_default_dialog_notification_settings(const DialogNotificationSettings &settings, bool compare_sound);
|
bool are_default_dialog_notification_settings(const DialogNotificationSettings &settings, bool compare_sound);
|
||||||
|
|
||||||
|
struct NeedUpdateDialogNotificationSettings {
|
||||||
|
bool need_update_server = false;
|
||||||
|
bool need_update_local = false;
|
||||||
|
bool are_changed = false;
|
||||||
|
};
|
||||||
|
NeedUpdateDialogNotificationSettings need_update_dialog_notification_settings(
|
||||||
|
const DialogNotificationSettings *current_settings, const DialogNotificationSettings &new_settings);
|
||||||
|
|
||||||
} // namespace td
|
} // namespace td
|
||||||
|
@ -448,25 +448,8 @@ bool ForumTopicManager::update_forum_topic_notification_settings(DialogId dialog
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool need_update_server = current_settings->mute_until != new_settings.mute_until ||
|
auto need_update = need_update_dialog_notification_settings(current_settings, new_settings);
|
||||||
!are_equivalent_notification_sounds(current_settings->sound, new_settings.sound) ||
|
if (need_update.are_changed) {
|
||||||
current_settings->show_preview != new_settings.show_preview ||
|
|
||||||
current_settings->use_default_mute_until != new_settings.use_default_mute_until ||
|
|
||||||
current_settings->use_default_show_preview != new_settings.use_default_show_preview;
|
|
||||||
bool need_update_local =
|
|
||||||
current_settings->use_default_disable_pinned_message_notifications !=
|
|
||||||
new_settings.use_default_disable_pinned_message_notifications ||
|
|
||||||
current_settings->disable_pinned_message_notifications != new_settings.disable_pinned_message_notifications ||
|
|
||||||
current_settings->use_default_disable_mention_notifications !=
|
|
||||||
new_settings.use_default_disable_mention_notifications ||
|
|
||||||
current_settings->disable_mention_notifications != new_settings.disable_mention_notifications;
|
|
||||||
|
|
||||||
bool is_changed = need_update_server || need_update_local ||
|
|
||||||
current_settings->is_synchronized != new_settings.is_synchronized ||
|
|
||||||
current_settings->is_use_default_fixed != new_settings.is_use_default_fixed ||
|
|
||||||
are_different_equivalent_notification_sounds(current_settings->sound, new_settings.sound);
|
|
||||||
|
|
||||||
if (is_changed) {
|
|
||||||
// TODO update unmute timeouts, td_api updates, remove notifications
|
// TODO update unmute timeouts, td_api updates, remove notifications
|
||||||
*current_settings = std::move(new_settings);
|
*current_settings = std::move(new_settings);
|
||||||
|
|
||||||
@ -475,7 +458,7 @@ bool ForumTopicManager::update_forum_topic_notification_settings(DialogId dialog
|
|||||||
topic->need_save_to_database_ = true;
|
topic->need_save_to_database_ = true;
|
||||||
save_topic_to_database(dialog_id, topic);
|
save_topic_to_database(dialog_id, topic);
|
||||||
}
|
}
|
||||||
return need_update_server;
|
return need_update.need_update_server;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ForumTopicManager::get_forum_topic(DialogId dialog_id, MessageId top_thread_message_id,
|
void ForumTopicManager::get_forum_topic(DialogId dialog_id, MessageId top_thread_message_id,
|
||||||
|
@ -8213,25 +8213,8 @@ bool MessagesManager::update_dialog_notification_settings(DialogId dialog_id,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool need_update_server = current_settings->mute_until != new_settings.mute_until ||
|
auto need_update = need_update_dialog_notification_settings(current_settings, new_settings);
|
||||||
!are_equivalent_notification_sounds(current_settings->sound, new_settings.sound) ||
|
if (need_update.are_changed) {
|
||||||
current_settings->show_preview != new_settings.show_preview ||
|
|
||||||
current_settings->use_default_mute_until != new_settings.use_default_mute_until ||
|
|
||||||
current_settings->use_default_show_preview != new_settings.use_default_show_preview;
|
|
||||||
bool need_update_local =
|
|
||||||
current_settings->use_default_disable_pinned_message_notifications !=
|
|
||||||
new_settings.use_default_disable_pinned_message_notifications ||
|
|
||||||
current_settings->disable_pinned_message_notifications != new_settings.disable_pinned_message_notifications ||
|
|
||||||
current_settings->use_default_disable_mention_notifications !=
|
|
||||||
new_settings.use_default_disable_mention_notifications ||
|
|
||||||
current_settings->disable_mention_notifications != new_settings.disable_mention_notifications;
|
|
||||||
|
|
||||||
bool is_changed = need_update_server || need_update_local ||
|
|
||||||
current_settings->is_synchronized != new_settings.is_synchronized ||
|
|
||||||
current_settings->is_use_default_fixed != new_settings.is_use_default_fixed ||
|
|
||||||
are_different_equivalent_notification_sounds(current_settings->sound, new_settings.sound);
|
|
||||||
|
|
||||||
if (is_changed) {
|
|
||||||
Dialog *d = get_dialog(dialog_id);
|
Dialog *d = get_dialog(dialog_id);
|
||||||
LOG_CHECK(d != nullptr) << "Wrong " << dialog_id << " in update_dialog_notification_settings";
|
LOG_CHECK(d != nullptr) << "Wrong " << dialog_id << " in update_dialog_notification_settings";
|
||||||
bool was_dialog_mentions_disabled = is_dialog_mention_notifications_disabled(d);
|
bool was_dialog_mentions_disabled = is_dialog_mention_notifications_disabled(d);
|
||||||
@ -8261,13 +8244,13 @@ bool MessagesManager::update_dialog_notification_settings(DialogId dialog_id,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (need_update_server || need_update_local) {
|
if (need_update.need_update_server || need_update.need_update_local) {
|
||||||
send_closure(G()->td(), &Td::send_update,
|
send_closure(G()->td(), &Td::send_update,
|
||||||
make_tl_object<td_api::updateChatNotificationSettings>(
|
make_tl_object<td_api::updateChatNotificationSettings>(
|
||||||
dialog_id.get(), get_chat_notification_settings_object(current_settings)));
|
dialog_id.get(), get_chat_notification_settings_object(current_settings)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return need_update_server;
|
return need_update.need_update_server;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesManager::schedule_dialog_unmute(DialogId dialog_id, bool use_default, int32 mute_until) {
|
void MessagesManager::schedule_dialog_unmute(DialogId dialog_id, bool use_default, int32 mute_until) {
|
||||||
|
Loading…
Reference in New Issue
Block a user