Add InputDialogId.
GitOrigin-RevId: 0fbfdb383b13c5398c8f98e7315837c892db258a
This commit is contained in:
parent
89e0dd6a06
commit
eb07452aaa
@ -425,6 +425,7 @@ set(TDLIB_SOURCE
|
|||||||
td/telegram/Global.cpp
|
td/telegram/Global.cpp
|
||||||
td/telegram/HashtagHints.cpp
|
td/telegram/HashtagHints.cpp
|
||||||
td/telegram/InlineQueriesManager.cpp
|
td/telegram/InlineQueriesManager.cpp
|
||||||
|
td/telegram/InputDialogId.cpp
|
||||||
td/telegram/InputMessageText.cpp
|
td/telegram/InputMessageText.cpp
|
||||||
td/telegram/JsonValue.cpp
|
td/telegram/JsonValue.cpp
|
||||||
td/telegram/LanguagePackManager.cpp
|
td/telegram/LanguagePackManager.cpp
|
||||||
@ -588,6 +589,7 @@ set(TDLIB_SOURCE
|
|||||||
td/telegram/Global.h
|
td/telegram/Global.h
|
||||||
td/telegram/HashtagHints.h
|
td/telegram/HashtagHints.h
|
||||||
td/telegram/InlineQueriesManager.h
|
td/telegram/InlineQueriesManager.h
|
||||||
|
td/telegram/InputDialogId.h
|
||||||
td/telegram/InputMessageText.h
|
td/telegram/InputMessageText.h
|
||||||
td/telegram/JsonValue.h
|
td/telegram/JsonValue.h
|
||||||
td/telegram/LanguagePackManager.h
|
td/telegram/LanguagePackManager.h
|
||||||
|
@ -14,18 +14,14 @@ namespace td {
|
|||||||
|
|
||||||
bool DialogId::is_valid() const {
|
bool DialogId::is_valid() const {
|
||||||
switch (get_type()) {
|
switch (get_type()) {
|
||||||
case DialogType::User: {
|
case DialogType::User:
|
||||||
return get_user_id().is_valid();
|
return get_user_id().is_valid();
|
||||||
}
|
case DialogType::Chat:
|
||||||
case DialogType::Chat: {
|
|
||||||
return get_chat_id().is_valid();
|
return get_chat_id().is_valid();
|
||||||
}
|
case DialogType::Channel:
|
||||||
case DialogType::Channel: {
|
|
||||||
return get_channel_id().is_valid();
|
return get_channel_id().is_valid();
|
||||||
}
|
case DialogType::SecretChat:
|
||||||
case DialogType::SecretChat: {
|
|
||||||
return get_secret_chat_id().is_valid();
|
return get_secret_chat_id().is_valid();
|
||||||
}
|
|
||||||
case DialogType::None:
|
case DialogType::None:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
|
@ -37,7 +37,6 @@ class DialogId {
|
|||||||
static int64 get_peer_id(const tl_object_ptr<telegram_api::Peer> &peer);
|
static int64 get_peer_id(const tl_object_ptr<telegram_api::Peer> &peer);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using UnderlyingType = decltype(id);
|
|
||||||
DialogId() = default;
|
DialogId() = default;
|
||||||
|
|
||||||
explicit DialogId(int64 dialog_id) : id(dialog_id) {
|
explicit DialogId(int64 dialog_id) : id(dialog_id) {
|
||||||
|
80
td/telegram/InputDialogId.cpp
Normal file
80
td/telegram/InputDialogId.cpp
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
//
|
||||||
|
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2020
|
||||||
|
//
|
||||||
|
// 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/InputDialogId.h"
|
||||||
|
|
||||||
|
#include "td/utils/logging.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
|
||||||
|
InputDialogId::InputDialogId(const tl_object_ptr<telegram_api::InputPeer> &input_peer) {
|
||||||
|
CHECK(input_peer != nullptr);
|
||||||
|
switch (input_peer->get_id()) {
|
||||||
|
case telegram_api::inputPeerUser::ID: {
|
||||||
|
auto input_user = static_cast<const telegram_api::inputPeerUser *>(input_peer.get());
|
||||||
|
UserId user_id(input_user->user_id_);
|
||||||
|
if (user_id.is_valid()) {
|
||||||
|
dialog_id = DialogId(user_id);
|
||||||
|
access_hash = input_user->access_hash_;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case telegram_api::inputPeerChat::ID: {
|
||||||
|
auto input_chat = static_cast<const telegram_api::inputPeerChat *>(input_peer.get());
|
||||||
|
ChatId chat_id(input_chat->chat_id_);
|
||||||
|
if (chat_id.is_valid()) {
|
||||||
|
dialog_id = DialogId(chat_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case telegram_api::inputPeerChannel::ID: {
|
||||||
|
auto input_channel = static_cast<const telegram_api::inputPeerChannel *>(input_peer.get());
|
||||||
|
ChannelId channel_id(input_channel->channel_id_);
|
||||||
|
if (channel_id.is_valid()) {
|
||||||
|
dialog_id = DialogId(channel_id);
|
||||||
|
access_hash = input_channel->access_hash_;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
LOG(ERROR) << "Receive " << to_string(input_peer);
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<InputDialogId> InputDialogId::get_input_dialog_ids(const vector<tl_object_ptr<telegram_api::InputPeer>> &input_peers) {
|
||||||
|
vector<InputDialogId> result;
|
||||||
|
result.reserve(input_peers.size());
|
||||||
|
for (auto &input_peer:input_peers) {
|
||||||
|
InputDialogId input_dialog_id(input_peer);
|
||||||
|
if (input_dialog_id.is_valid()) {
|
||||||
|
result.push_back(input_dialog_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
tl_object_ptr<telegram_api::InputPeer> InputDialogId::get_input_peer() const {
|
||||||
|
switch (dialog_id.get_type()) {
|
||||||
|
case DialogType::User:
|
||||||
|
return make_tl_object<telegram_api::inputPeerUser>(dialog_id.get_user_id().get(), access_hash);
|
||||||
|
case DialogType::Chat:
|
||||||
|
return make_tl_object<telegram_api::inputPeerChat>(dialog_id.get_chat_id().get());
|
||||||
|
case DialogType::Channel:
|
||||||
|
return make_tl_object<telegram_api::inputPeerChannel>(dialog_id.get_channel_id().get(), access_hash);
|
||||||
|
case DialogType::SecretChat:
|
||||||
|
case DialogType::None:
|
||||||
|
return nullptr;
|
||||||
|
default:
|
||||||
|
UNREACHABLE();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace td
|
67
td/telegram/InputDialogId.h
Normal file
67
td/telegram/InputDialogId.h
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
//
|
||||||
|
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2020
|
||||||
|
//
|
||||||
|
// 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/telegram_api.h"
|
||||||
|
|
||||||
|
#include "td/utils/common.h"
|
||||||
|
#include "td/utils/StringBuilder.h"
|
||||||
|
|
||||||
|
namespace td {
|
||||||
|
|
||||||
|
class InputDialogId {
|
||||||
|
DialogId dialog_id;
|
||||||
|
int64 access_hash = 0;
|
||||||
|
|
||||||
|
public:
|
||||||
|
InputDialogId() = default;
|
||||||
|
|
||||||
|
explicit InputDialogId(DialogId dialog_id): dialog_id(dialog_id) {
|
||||||
|
CHECK(dialog_id.get_type() == DialogType::SecretChat);
|
||||||
|
}
|
||||||
|
|
||||||
|
explicit InputDialogId(const tl_object_ptr<telegram_api::InputPeer> &input_peer);
|
||||||
|
|
||||||
|
static vector<InputDialogId> get_input_dialog_ids(const vector<tl_object_ptr<telegram_api::InputPeer>> &input_peers);
|
||||||
|
|
||||||
|
bool operator==(const InputDialogId &other) const {
|
||||||
|
return dialog_id == other.dialog_id && access_hash == other.access_hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator!=(const InputDialogId &other) const {
|
||||||
|
return !(*this == other);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_valid() const {
|
||||||
|
return dialog_id.is_valid();
|
||||||
|
}
|
||||||
|
|
||||||
|
DialogId get_dialog_id() const {
|
||||||
|
return dialog_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
tl_object_ptr<telegram_api::InputPeer> get_input_peer() const;
|
||||||
|
|
||||||
|
template <class StorerT>
|
||||||
|
void store(StorerT &storer) const {
|
||||||
|
dialog_id.store(storer);
|
||||||
|
storer.store_long(access_hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class ParserT>
|
||||||
|
void parse(ParserT &parser) {
|
||||||
|
dialog_id.parse(parser);
|
||||||
|
access_hash = parser.fetch_long();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
inline StringBuilder &operator<<(StringBuilder &string_builder, InputDialogId input_dialog_id) {
|
||||||
|
return string_builder << "input " << input_dialog_id.get_dialog_id();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace td
|
@ -26,6 +26,7 @@
|
|||||||
#include "td/telegram/FolderId.h"
|
#include "td/telegram/FolderId.h"
|
||||||
#include "td/telegram/FullMessageId.h"
|
#include "td/telegram/FullMessageId.h"
|
||||||
#include "td/telegram/Global.h"
|
#include "td/telegram/Global.h"
|
||||||
|
#include "td/telegram/InputDialogId.h"
|
||||||
#include "td/telegram/MessageContentType.h"
|
#include "td/telegram/MessageContentType.h"
|
||||||
#include "td/telegram/MessageId.h"
|
#include "td/telegram/MessageId.h"
|
||||||
#include "td/telegram/MessagesDb.h"
|
#include "td/telegram/MessagesDb.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user