From a3e39142d65b24d5a115fc3ed20f0d18e078f393 Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Tue, 17 Dec 2019 12:04:56 +0100 Subject: [PATCH] bugfixes --- telegram/Command.cs | 10 +++++++++- telegram/Util.cs | 31 +++++++++++++++++++++++++++---- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/telegram/Command.cs b/telegram/Command.cs index e861ea6..5618996 100644 --- a/telegram/Command.cs +++ b/telegram/Command.cs @@ -315,6 +315,12 @@ namespace telegram { public OpenSecretCommand() : base("os", "", "opens a secret chat. queries chat list.", "", -1) { } public override void Handler(List inputParams) { + if (inputParams.Count == 0) { + lock (@lock) + messageQueue.Add($"{Ansi.Red}[tgcli] No matching chat found."); + return; + } + var query = inputParams.Aggregate((current, param) => current + " " + param).Trim(); var userId = SearchUserInChats(query); if (userId == 0 || query.Length == 0) { @@ -580,7 +586,9 @@ namespace telegram { var secretChats = GetSecretChats(); lock (@lock) { messageQueue.Add($"{Ansi.Yellow}[tgcli] Listing {secretChats.Count} secret chats:"); - secretChats.ForEach(chat => { messageQueue.Add($"{Ansi.Bold}{Ansi.Red}[sec] {chat.Title} -> {chat.Id}"); }); + secretChats.ForEach(chat => { + messageQueue.Add($"{Ansi.Bold}{Ansi.Red}[sec] {chat.Title} -> {chat.Id} ({GetSecretChat(((TdApi.ChatType.ChatTypeSecret) chat.Type).SecretChatId).State.DataType})"); + }); } } } diff --git a/telegram/Util.cs b/telegram/Util.cs index c8d8220..c581dea 100644 --- a/telegram/Util.cs +++ b/telegram/Util.cs @@ -103,10 +103,33 @@ namespace telegram { } public static List GetUnreadChats(bool all = false) { - var response = client.ExecuteAsync(new GetChats {OffsetOrder = long.MaxValue, Limit = int.MaxValue}).Result; - return all - ? response.ChatIds.Select(GetChat).Where(c => c.UnreadCount > 0 || c.IsMarkedAsUnread).ToList() - : response.ChatIds.Select(GetChat).Where(c => (c.UnreadCount > 0 || c.IsMarkedAsUnread) && c.NotificationSettings.MuteFor == 0).ToList(); + var output = new List(); + var offset = 0L; + while (true) { + if (offset == 0) { + var response = client.ExecuteAsync(new GetChats {OffsetOrder = long.MaxValue, Limit = int.MaxValue}).Result; + offset = GetChat(response.ChatIds.Last()).Order; + output.AddRange(all + ? response.ChatIds.Select(GetChat).Where(c => c.UnreadCount > 0 || c.IsMarkedAsUnread).ToList() + : response.ChatIds.Select(GetChat) + .Where(c => (c.UnreadCount > 0 || c.IsMarkedAsUnread) && c.NotificationSettings.MuteFor == 0) + .ToList()); + } + else { + var response = client.ExecuteAsync(new GetChats {OffsetOrder = offset, Limit = int.MaxValue}).Result; + if (response.ChatIds.Length == 0) + break; + + offset = GetChat(response.ChatIds.Last()).Order; + output.AddRange(all + ? response.ChatIds.Select(GetChat).Where(c => c.UnreadCount > 0 || c.IsMarkedAsUnread).ToList() + : response.ChatIds.Select(GetChat) + .Where(c => (c.UnreadCount > 0 || c.IsMarkedAsUnread) && c.NotificationSettings.MuteFor == 0) + .ToList()); + } + } + + return output; } public static List GetChats() {