Add NotificationObjectFullId class.
This commit is contained in:
parent
989dc3d8a6
commit
f7887181c4
@ -723,6 +723,7 @@ set(TDLIB_SOURCE
|
|||||||
td/telegram/NotificationGroupType.h
|
td/telegram/NotificationGroupType.h
|
||||||
td/telegram/NotificationId.h
|
td/telegram/NotificationId.h
|
||||||
td/telegram/NotificationManager.h
|
td/telegram/NotificationManager.h
|
||||||
|
td/telegram/NotificationObjectFullId.h
|
||||||
td/telegram/NotificationObjectId.h
|
td/telegram/NotificationObjectId.h
|
||||||
td/telegram/NotificationSettingsScope.h
|
td/telegram/NotificationSettingsScope.h
|
||||||
td/telegram/NotificationSettingsManager.h
|
td/telegram/NotificationSettingsManager.h
|
||||||
|
@ -1729,8 +1729,8 @@ void NotificationManager::on_notification_removed(NotificationId notification_id
|
|||||||
}
|
}
|
||||||
temporary_notification_log_event_ids_.erase(add_it);
|
temporary_notification_log_event_ids_.erase(add_it);
|
||||||
|
|
||||||
auto erased_notification_count = temporary_notifications_.erase(temporary_notification_message_ids_[notification_id]);
|
auto erased_notification_count = temporary_notifications_.erase(temporary_notification_object_ids_[notification_id]);
|
||||||
auto erased_message_id_count = temporary_notification_message_ids_.erase(notification_id);
|
auto erased_message_id_count = temporary_notification_object_ids_.erase(notification_id);
|
||||||
CHECK(erased_notification_count > 0);
|
CHECK(erased_notification_count > 0);
|
||||||
CHECK(erased_message_id_count > 0);
|
CHECK(erased_message_id_count > 0);
|
||||||
|
|
||||||
@ -3849,10 +3849,11 @@ void NotificationManager::add_message_push_notification(DialogId dialog_id, Mess
|
|||||||
sender_user_id.is_valid() ? td_->contacts_manager_->get_my_id() == sender_user_id : is_from_scheduled;
|
sender_user_id.is_valid() ? td_->contacts_manager_->get_my_id() == sender_user_id : is_from_scheduled;
|
||||||
if (log_event_id != 0) {
|
if (log_event_id != 0) {
|
||||||
VLOG(notifications) << "Register temporary " << notification_id << " with log event " << log_event_id;
|
VLOG(notifications) << "Register temporary " << notification_id << " with log event " << log_event_id;
|
||||||
|
NotificationObjectFullId object_full_id(dialog_id, message_id);
|
||||||
temporary_notification_log_event_ids_[notification_id] = log_event_id;
|
temporary_notification_log_event_ids_[notification_id] = log_event_id;
|
||||||
temporary_notifications_[FullMessageId(dialog_id, message_id)] = {group_id, notification_id, sender_user_id,
|
temporary_notifications_[object_full_id] = {group_id, notification_id, sender_user_id,
|
||||||
sender_dialog_id, sender_name, is_outgoing};
|
sender_dialog_id, sender_name, is_outgoing};
|
||||||
temporary_notification_message_ids_[notification_id] = FullMessageId(dialog_id, message_id);
|
temporary_notification_object_ids_[notification_id] = object_full_id;
|
||||||
}
|
}
|
||||||
push_notification_promises_[notification_id].push_back(std::move(promise));
|
push_notification_promises_[notification_id].push_back(std::move(promise));
|
||||||
|
|
||||||
@ -3948,7 +3949,7 @@ void NotificationManager::edit_message_push_notification(DialogId dialog_id, Mes
|
|||||||
return promise.set_error(Status::Error(200, "Immediate success"));
|
return promise.set_error(Status::Error(200, "Immediate success"));
|
||||||
}
|
}
|
||||||
|
|
||||||
auto it = temporary_notifications_.find(FullMessageId(dialog_id, message_id));
|
auto it = temporary_notifications_.find({dialog_id, message_id});
|
||||||
if (it == temporary_notifications_.end()) {
|
if (it == temporary_notifications_.end()) {
|
||||||
VLOG(notifications) << "Ignore edit of message push notification for " << message_id << " in " << dialog_id
|
VLOG(notifications) << "Ignore edit of message push notification for " << message_id << " in " << dialog_id
|
||||||
<< " edited at " << edit_date;
|
<< " edited at " << edit_date;
|
||||||
|
@ -9,13 +9,13 @@
|
|||||||
#include "td/telegram/CallId.h"
|
#include "td/telegram/CallId.h"
|
||||||
#include "td/telegram/DialogId.h"
|
#include "td/telegram/DialogId.h"
|
||||||
#include "td/telegram/Document.h"
|
#include "td/telegram/Document.h"
|
||||||
#include "td/telegram/FullMessageId.h"
|
|
||||||
#include "td/telegram/MessageId.h"
|
#include "td/telegram/MessageId.h"
|
||||||
#include "td/telegram/Notification.h"
|
#include "td/telegram/Notification.h"
|
||||||
#include "td/telegram/NotificationGroupId.h"
|
#include "td/telegram/NotificationGroupId.h"
|
||||||
#include "td/telegram/NotificationGroupKey.h"
|
#include "td/telegram/NotificationGroupKey.h"
|
||||||
#include "td/telegram/NotificationGroupType.h"
|
#include "td/telegram/NotificationGroupType.h"
|
||||||
#include "td/telegram/NotificationId.h"
|
#include "td/telegram/NotificationId.h"
|
||||||
|
#include "td/telegram/NotificationObjectFullId.h"
|
||||||
#include "td/telegram/NotificationObjectId.h"
|
#include "td/telegram/NotificationObjectId.h"
|
||||||
#include "td/telegram/NotificationType.h"
|
#include "td/telegram/NotificationType.h"
|
||||||
#include "td/telegram/Photo.h"
|
#include "td/telegram/Photo.h"
|
||||||
@ -401,8 +401,8 @@ class NotificationManager final : public Actor {
|
|||||||
string sender_name;
|
string sender_name;
|
||||||
bool is_outgoing;
|
bool is_outgoing;
|
||||||
};
|
};
|
||||||
FlatHashMap<FullMessageId, TemporaryNotification, FullMessageIdHash> temporary_notifications_;
|
FlatHashMap<NotificationObjectFullId, TemporaryNotification, NotificationObjectFullIdHash> temporary_notifications_;
|
||||||
FlatHashMap<NotificationId, FullMessageId, NotificationIdHash> temporary_notification_message_ids_;
|
FlatHashMap<NotificationId, NotificationObjectFullId, NotificationIdHash> temporary_notification_object_ids_;
|
||||||
FlatHashMap<NotificationId, vector<Promise<Unit>>, NotificationIdHash> push_notification_promises_;
|
FlatHashMap<NotificationId, vector<Promise<Unit>>, NotificationIdHash> push_notification_promises_;
|
||||||
|
|
||||||
struct ActiveCallNotification {
|
struct ActiveCallNotification {
|
||||||
|
60
td/telegram/NotificationObjectFullId.h
Normal file
60
td/telegram/NotificationObjectFullId.h
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
//
|
||||||
|
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
|
||||||
|
//
|
||||||
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
//
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/telegram/DialogId.h"
|
||||||
|
#include "td/telegram/NotificationObjectId.h"
|
||||||
|
|
||||||
|
#include "td/utils/common.h"
|
||||||
|
#include "td/utils/HashTableUtils.h"
|
||||||
|
#include "td/utils/StringBuilder.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
|
||||||
|
struct NotificationObjectFullId {
|
||||||
|
private:
|
||||||
|
DialogId dialog_id;
|
||||||
|
NotificationObjectId notification_object_id;
|
||||||
|
|
||||||
|
public:
|
||||||
|
NotificationObjectFullId() : dialog_id(), notification_object_id() {
|
||||||
|
}
|
||||||
|
|
||||||
|
NotificationObjectFullId(DialogId dialog_id, NotificationObjectId notification_object_id)
|
||||||
|
: dialog_id(dialog_id), notification_object_id(notification_object_id) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(const NotificationObjectFullId &other) const {
|
||||||
|
return dialog_id == other.dialog_id && notification_object_id == other.notification_object_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator!=(const NotificationObjectFullId &other) const {
|
||||||
|
return !(*this == other);
|
||||||
|
}
|
||||||
|
|
||||||
|
DialogId get_dialog_id() const {
|
||||||
|
return dialog_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
NotificationObjectId get_notification_object_id() const {
|
||||||
|
return notification_object_id;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct NotificationObjectFullIdHash {
|
||||||
|
uint32 operator()(NotificationObjectFullId full_notification_object_id) const {
|
||||||
|
return combine_hashes(DialogIdHash()(full_notification_object_id.get_dialog_id()),
|
||||||
|
NotificationObjectIdHash()(full_notification_object_id.get_notification_object_id()));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
inline StringBuilder &operator<<(StringBuilder &string_builder, NotificationObjectFullId full_notification_object_id) {
|
||||||
|
return string_builder << full_notification_object_id.get_notification_object_id() << " in "
|
||||||
|
<< full_notification_object_id.get_dialog_id();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace td
|
Loading…
Reference in New Issue
Block a user