Add class NotificationType.
GitOrigin-RevId: 16951bb0dd0d13a1f3332449350fed4a4a1ef13e
This commit is contained in:
parent
5f23a99fca
commit
4605f56d3c
@ -406,6 +406,7 @@ set(TDLIB_SOURCE
|
|||||||
td/telegram/net/SessionMultiProxy.cpp
|
td/telegram/net/SessionMultiProxy.cpp
|
||||||
td/telegram/NotificationManager.cpp
|
td/telegram/NotificationManager.cpp
|
||||||
td/telegram/NotificationSettings.cpp
|
td/telegram/NotificationSettings.cpp
|
||||||
|
td/telegram/NotificationType.cpp
|
||||||
td/telegram/Payments.cpp
|
td/telegram/Payments.cpp
|
||||||
td/telegram/PasswordManager.cpp
|
td/telegram/PasswordManager.cpp
|
||||||
td/telegram/PrivacyManager.cpp
|
td/telegram/PrivacyManager.cpp
|
||||||
@ -536,6 +537,7 @@ set(TDLIB_SOURCE
|
|||||||
td/telegram/net/TempAuthKeyWatchdog.h
|
td/telegram/net/TempAuthKeyWatchdog.h
|
||||||
td/telegram/NotificationManager.h
|
td/telegram/NotificationManager.h
|
||||||
td/telegram/NotificationSettings.h
|
td/telegram/NotificationSettings.h
|
||||||
|
td/telegram/NotificationType.h
|
||||||
td/telegram/PasswordManager.h
|
td/telegram/PasswordManager.h
|
||||||
td/telegram/Payments.h
|
td/telegram/Payments.h
|
||||||
td/telegram/Photo.h
|
td/telegram/Photo.h
|
||||||
|
@ -1811,8 +1811,8 @@ notificationTypeNewMessage message:message = NotificationType;
|
|||||||
//@description New secret chat was created
|
//@description New secret chat was created
|
||||||
notificationTypeNewSecretChat = NotificationType;
|
notificationTypeNewSecretChat = NotificationType;
|
||||||
|
|
||||||
//@description New incoming call was received @call_id Call identifier
|
//@description New call was received @call_id Call identifier
|
||||||
notificationTypeNewIncomingCall call_id:int32 = NotificationType;
|
notificationTypeNewCall call_id:int32 = NotificationType;
|
||||||
|
|
||||||
|
|
||||||
//@description Contains information about a notification @id Unique persistent identifier of this notification @type Notification type
|
//@description Contains information about a notification @id Unique persistent identifier of this notification @type Notification type
|
||||||
@ -2219,7 +2219,7 @@ updateChatDraftMessage chat_id:int53 draft_message:draftMessage order:int64 = Up
|
|||||||
//@description A list of active notifications in a notification group has changed @notification_group_id Unique notification group identifier @chat_id Identifier of a chat to which all notifications in the group belong
|
//@description A list of active notifications in a notification group has changed @notification_group_id Unique notification group identifier @chat_id Identifier of a chat to which all notifications in the group belong
|
||||||
//@notification_settings_chat_id Chat identifier, which notification settings must be applied @silent True, if the notifications should be shown without sound
|
//@notification_settings_chat_id Chat identifier, which notification settings must be applied @silent True, if the notifications should be shown without sound
|
||||||
//@total_count Total number of active notifications in the group @new_notifications List of new group notifications @edited_notifications List of edited group notifications @removed_notification_ids Identifiers of removed group notifications
|
//@total_count Total number of active notifications in the group @new_notifications List of new group notifications @edited_notifications List of edited group notifications @removed_notification_ids Identifiers of removed group notifications
|
||||||
updateNotificationGroup chat_id:int53 notification_group_id:int32 notification_settings_chat_id:int53 silent:Bool total_count:int32 new_notifications:vector<notification> edited_notifications:vector<notification> removed_notification_ids:vector<int32> = Update;
|
updateNotificationGroup notification_group_id:int32 chat_id:int53 notification_settings_chat_id:int53 silent:Bool total_count:int32 new_notifications:vector<notification> edited_notifications:vector<notification> removed_notification_ids:vector<int32> = Update;
|
||||||
|
|
||||||
//@description Contains active notifications that was shown on previous application launches. This update is sent only if a message database is used. In that case it comes once before any updateNotificationGroup update @groups Lists of active notification groups
|
//@description Contains active notifications that was shown on previous application launches. This update is sent only if a message database is used. In that case it comes once before any updateNotificationGroup update @groups Lists of active notification groups
|
||||||
updateActiveNotifications groups:vector<notificationGroup> = Update;
|
updateActiveNotifications groups:vector<notificationGroup> = Update;
|
||||||
@ -2614,7 +2614,7 @@ getChatMessageCount chat_id:int53 filter:SearchMessagesFilter return_local:Bool
|
|||||||
removeNotification notification_id:int32 = Ok;
|
removeNotification notification_id:int32 = Ok;
|
||||||
|
|
||||||
//@description Removes group of active notifications @notification_group_id Notification group identifier @max_notification_id Maximum identifier of removed notifications
|
//@description Removes group of active notifications @notification_group_id Notification group identifier @max_notification_id Maximum identifier of removed notifications
|
||||||
removeNotifications notification_group_id:int32 max_notification_id:int32 = Ok;
|
removeNotificationGroup notification_group_id:int32 max_notification_id:int32 = Ok;
|
||||||
|
|
||||||
|
|
||||||
//@description Returns a public HTTPS link to a message. Available only for messages in public supergroups and channels
|
//@description Returns a public HTTPS link to a message. Available only for messages in public supergroups and channels
|
||||||
|
Binary file not shown.
@ -13,6 +13,21 @@ namespace td {
|
|||||||
NotificationManager::NotificationManager(Td *td) : td_(td) {
|
NotificationManager::NotificationManager(Td *td) : td_(td) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32 NotificationManager::get_next_notification_id() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NotificationManager::add_notification(int32 group_id, int32 total_count, DialogId dialog_id,
|
||||||
|
DialogId notification_settings_dialog_id, bool silent, int32 notification_id,
|
||||||
|
unique_ptr<NotificationType> type) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void NotificationManager::edit_notification(int32 notification_id, unique_ptr<NotificationType> type) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void NotificationManager::delete_notification(int32 notification_id) {
|
||||||
|
}
|
||||||
|
|
||||||
void NotificationManager::remove_notification(int32 notification_id, Promise<Unit> &&promise) {
|
void NotificationManager::remove_notification(int32 notification_id, Promise<Unit> &&promise) {
|
||||||
if (!is_valid_notification_id(notification_id)) {
|
if (!is_valid_notification_id(notification_id)) {
|
||||||
return promise.set_error(Status::Error(400, "Notification identifier is invalid"));
|
return promise.set_error(Status::Error(400, "Notification identifier is invalid"));
|
||||||
@ -20,7 +35,8 @@ void NotificationManager::remove_notification(int32 notification_id, Promise<Uni
|
|||||||
promise.set_value(Unit());
|
promise.set_value(Unit());
|
||||||
}
|
}
|
||||||
|
|
||||||
void NotificationManager::remove_notifications(int32 group_id, int32 max_notification_id, Promise<Unit> &&promise) {
|
void NotificationManager::remove_notification_group(int32 group_id, int32 max_notification_id,
|
||||||
|
Promise<Unit> &&promise) {
|
||||||
if (!is_valid_group_id(group_id)) {
|
if (!is_valid_group_id(group_id)) {
|
||||||
return promise.set_error(Status::Error(400, "Group identifier is invalid"));
|
return promise.set_error(Status::Error(400, "Group identifier is invalid"));
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,13 @@
|
|||||||
//
|
//
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "td/telegram/DialogId.h"
|
||||||
|
#include "td/telegram/NotificationType.h"
|
||||||
|
|
||||||
#include "td/actor/PromiseFuture.h"
|
#include "td/actor/PromiseFuture.h"
|
||||||
|
|
||||||
|
#include "td/utils/common.h"
|
||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
|
|
||||||
class Td;
|
class Td;
|
||||||
@ -16,9 +21,18 @@ class NotificationManager {
|
|||||||
public:
|
public:
|
||||||
explicit NotificationManager(Td *td);
|
explicit NotificationManager(Td *td);
|
||||||
|
|
||||||
|
int32 get_next_notification_id();
|
||||||
|
|
||||||
|
void add_notification(int32 group_id, int32 total_count, DialogId dialog_id, DialogId notification_settings_dialog_id,
|
||||||
|
bool silent, int32 notification_id, unique_ptr<NotificationType> type);
|
||||||
|
|
||||||
|
void edit_notification(int32 notification_id, unique_ptr<NotificationType> type);
|
||||||
|
|
||||||
|
void delete_notification(int32 notification_id);
|
||||||
|
|
||||||
void remove_notification(int32 notification_id, Promise<Unit> &&promise);
|
void remove_notification(int32 notification_id, Promise<Unit> &&promise);
|
||||||
|
|
||||||
void remove_notifications(int32 group_id, int32 max_notification_id, Promise<Unit> &&promise);
|
void remove_notification_group(int32 group_id, int32 max_notification_id, Promise<Unit> &&promise);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static bool is_valid_notification_id(int32 notification_id);
|
static bool is_valid_notification_id(int32 notification_id);
|
||||||
|
69
td/telegram/NotificationType.cpp
Normal file
69
td/telegram/NotificationType.cpp
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
//
|
||||||
|
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
#include "td/telegram/NotificationType.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
|
||||||
|
class NotificationTypeMessage : public NotificationType {
|
||||||
|
StringBuilder &to_string_builder(StringBuilder &string_builder) const override {
|
||||||
|
return string_builder << "NewMessageNotification[" << message_id_ << ']';
|
||||||
|
}
|
||||||
|
|
||||||
|
Type get_type() const {
|
||||||
|
return Type::Message;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageId message_id_;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit NotificationTypeMessage(MessageId message_id) : message_id_(message_id) {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class NotificationTypeSecretChat : public NotificationType {
|
||||||
|
StringBuilder &to_string_builder(StringBuilder &string_builder) const override {
|
||||||
|
return string_builder << "NewSecretChatNotification[]";
|
||||||
|
}
|
||||||
|
|
||||||
|
Type get_type() const {
|
||||||
|
return Type::SecretChat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
NotificationTypeSecretChat() {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class NotificationTypeCall : public NotificationType {
|
||||||
|
StringBuilder &to_string_builder(StringBuilder &string_builder) const override {
|
||||||
|
return string_builder << "NewCallNotification[" << call_id_ << ']';
|
||||||
|
}
|
||||||
|
|
||||||
|
Type get_type() const {
|
||||||
|
return Type::Call;
|
||||||
|
}
|
||||||
|
|
||||||
|
CallId call_id_;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit NotificationTypeCall(CallId call_id) : call_id_(call_id) {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
unique_ptr<NotificationType> create_new_message_notification(MessageId message_id) {
|
||||||
|
return make_unique<NotificationTypeMessage>(message_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
unique_ptr<NotificationType> create_new_secret_chat_notification() {
|
||||||
|
return make_unique<NotificationTypeSecretChat>();
|
||||||
|
}
|
||||||
|
|
||||||
|
unique_ptr<NotificationType> create_new_call_notification(CallId call_id) {
|
||||||
|
return make_unique<NotificationTypeCall>(call_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace td
|
47
td/telegram/NotificationType.h
Normal file
47
td/telegram/NotificationType.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
//
|
||||||
|
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018
|
||||||
|
//
|
||||||
|
// 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/CallId.h"
|
||||||
|
#include "td/telegram/MessageId.h"
|
||||||
|
|
||||||
|
#include "td/utils/common.h"
|
||||||
|
#include "td/utils/StringBuilder.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
|
||||||
|
class NotificationType {
|
||||||
|
public:
|
||||||
|
NotificationType() = default;
|
||||||
|
NotificationType(const NotificationType &) = delete;
|
||||||
|
NotificationType &operator=(const NotificationType &) = delete;
|
||||||
|
NotificationType(NotificationType &&) = delete;
|
||||||
|
NotificationType &operator=(NotificationType &&) = delete;
|
||||||
|
|
||||||
|
virtual ~NotificationType() {
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual StringBuilder &to_string_builder(StringBuilder &string_builder) const = 0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// append only
|
||||||
|
enum class Type : int32 { Message, SecretChat, Call };
|
||||||
|
|
||||||
|
virtual Type get_type() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
inline StringBuilder &operator<<(StringBuilder &string_builder, const NotificationType ¬ification_type) {
|
||||||
|
return notification_type.to_string_builder(string_builder);
|
||||||
|
}
|
||||||
|
|
||||||
|
unique_ptr<NotificationType> create_new_message_notification(MessageId message_id);
|
||||||
|
|
||||||
|
unique_ptr<NotificationType> create_new_secret_chat_notification();
|
||||||
|
|
||||||
|
unique_ptr<NotificationType> create_new_call_notification(CallId call_id);
|
||||||
|
|
||||||
|
} // namespace td
|
@ -5070,10 +5070,10 @@ void Td::on_request(uint64 id, const td_api::removeNotification &request) {
|
|||||||
notification_manager_->remove_notification(request.notification_id_, std::move(promise));
|
notification_manager_->remove_notification(request.notification_id_, std::move(promise));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, const td_api::removeNotifications &request) {
|
void Td::on_request(uint64 id, const td_api::removeNotificationGroup &request) {
|
||||||
CHECK_IS_USER();
|
CHECK_IS_USER();
|
||||||
CREATE_OK_REQUEST_PROMISE();
|
CREATE_OK_REQUEST_PROMISE();
|
||||||
notification_manager_->remove_notifications(request.notification_group_id_, request.max_notification_id_,
|
notification_manager_->remove_notification_group(request.notification_group_id_, request.max_notification_id_,
|
||||||
std::move(promise));
|
std::move(promise));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -511,7 +511,7 @@ class Td final : public NetQueryCallback {
|
|||||||
|
|
||||||
void on_request(uint64 id, const td_api::removeNotification &request);
|
void on_request(uint64 id, const td_api::removeNotification &request);
|
||||||
|
|
||||||
void on_request(uint64 id, const td_api::removeNotifications &request);
|
void on_request(uint64 id, const td_api::removeNotificationGroup &request);
|
||||||
|
|
||||||
void on_request(uint64 id, const td_api::deleteMessages &request);
|
void on_request(uint64 id, const td_api::deleteMessages &request);
|
||||||
|
|
||||||
|
@ -3295,11 +3295,11 @@ class CliClient final : public Actor {
|
|||||||
} else if (op == "rn") {
|
} else if (op == "rn") {
|
||||||
string notification_id = args;
|
string notification_id = args;
|
||||||
send_request(make_tl_object<td_api::removeNotification>(to_integer<int32>(notification_id)));
|
send_request(make_tl_object<td_api::removeNotification>(to_integer<int32>(notification_id)));
|
||||||
} else if (op == "rns") {
|
} else if (op == "rng") {
|
||||||
string group_id;
|
string group_id;
|
||||||
string max_notification_id;
|
string max_notification_id;
|
||||||
std::tie(group_id, max_notification_id) = split(args);
|
std::tie(group_id, max_notification_id) = split(args);
|
||||||
send_request(make_tl_object<td_api::removeNotifications>(to_integer<int32>(group_id),
|
send_request(make_tl_object<td_api::removeNotificationGroup>(to_integer<int32>(group_id),
|
||||||
to_integer<int32>(max_notification_id)));
|
to_integer<int32>(max_notification_id)));
|
||||||
} else if (op == "gcrss") {
|
} else if (op == "gcrss") {
|
||||||
send_request(make_tl_object<td_api::getChatReportSpamState>(as_chat_id(args)));
|
send_request(make_tl_object<td_api::getChatReportSpamState>(as_chat_id(args)));
|
||||||
|
Loading…
Reference in New Issue
Block a user