aboutsummaryrefslogtreecommitdiffhomepage
path: root/td/telegram/DialogListId.cpp
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-01-18 00:12:45 +0300
committerlevlam <levlam@telegram.org>2026-01-18 00:12:45 +0300
commitb7e712839dccac2fe2d1bfaf84a2edd82c00927a (patch)
tree531a30427d2515c5b525cf4fc89830e69a416ee2 /td/telegram/DialogListId.cpp
parentf37c17f467f81c1828303ce59707c06f4dd90b3f (diff)
Add DialogListId.cpp.
Diffstat (limited to 'td/telegram/DialogListId.cpp')
-rw-r--r--td/telegram/DialogListId.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/td/telegram/DialogListId.cpp b/td/telegram/DialogListId.cpp
new file mode 100644
index 000000000..56e0f020e
--- /dev/null
+++ b/td/telegram/DialogListId.cpp
@@ -0,0 +1,76 @@
+//
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2026
+//
+// 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/DialogListId.h"
+
+namespace td {
+
+DialogListId::DialogListId(int64 dialog_list_id) : id(dialog_list_id) {
+ if (is_folder() && get_folder_id() != FolderId::archive()) {
+ id = FolderId::main().get();
+ } else if (is_filter()) {
+ CHECK(get_filter_id().is_valid());
+ }
+}
+
+DialogListId::DialogListId(const td_api::object_ptr<td_api::ChatList> &chat_list) {
+ if (chat_list == nullptr) {
+ CHECK(id == FolderId::main().get());
+ return;
+ }
+ switch (chat_list->get_id()) {
+ case td_api::chatListArchive::ID:
+ id = FolderId::archive().get();
+ break;
+ case td_api::chatListMain::ID:
+ CHECK(id == FolderId::main().get());
+ break;
+ case td_api::chatListFolder::ID: {
+ DialogFilterId filter_id(static_cast<const td_api::chatListFolder *>(chat_list.get())->chat_folder_id_);
+ if (filter_id.is_valid()) {
+ *this = DialogListId(filter_id);
+ }
+ break;
+ }
+ default:
+ UNREACHABLE();
+ break;
+ }
+}
+
+td_api::object_ptr<td_api::ChatList> DialogListId::get_chat_list_object() const {
+ if (is_folder()) {
+ auto folder_id = get_folder_id();
+ if (folder_id == FolderId::archive()) {
+ return td_api::make_object<td_api::chatListArchive>();
+ }
+ return td_api::make_object<td_api::chatListMain>();
+ }
+ if (is_filter()) {
+ return td_api::make_object<td_api::chatListFolder>(get_filter_id().get());
+ }
+ UNREACHABLE();
+ return nullptr;
+}
+
+StringBuilder &operator<<(StringBuilder &string_builder, DialogListId dialog_list_id) {
+ if (dialog_list_id.is_folder()) {
+ auto folder_id = dialog_list_id.get_folder_id();
+ if (folder_id == FolderId::archive()) {
+ return string_builder << "Archive chat list";
+ }
+ if (folder_id == FolderId::main()) {
+ return string_builder << "Main chat list";
+ }
+ return string_builder << "chat list " << folder_id;
+ }
+ if (dialog_list_id.is_filter()) {
+ return string_builder << "chat list " << dialog_list_id.get_filter_id();
+ }
+ return string_builder << "unknown chat list " << dialog_list_id.get();
+}
+
+} // namespace td