From 4ad71a6700b7e43fb23f51d7ecc9c5a1b94ba4f1 Mon Sep 17 00:00:00 2001 From: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com> Date: Mon, 6 May 2024 18:43:25 +0300 Subject: [PATCH] add /get subs diff command --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- src/Simplex/Chat.hs | 2 ++ src/Simplex/Chat/Controller.hs | 4 +++- src/Simplex/Chat/View.hs | 4 ++++ 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/cabal.project b/cabal.project index a8d751d4b8..64b527603c 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 93fd424f86086c6f378b50e343f32ec47f8b0c3f + tag: 1c73ac638f3f8d10f1e703a53ab9204ea7449241 source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 995d096223..1aeb0b8aae 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."93fd424f86086c6f378b50e343f32ec47f8b0c3f" = "1jijzj8k4pxv4ri76n1m1c576w0g78vl39z8x2mhyyfip7zcal4i"; + "https://github.com/simplex-chat/simplexmq.git"."1c73ac638f3f8d10f1e703a53ab9204ea7449241" = "0s4753vc9g6cc5igqhlq24m8b1b6443fls7j8xndf9ivl1gnmgwc"; "https://github.com/simplex-chat/hs-socks.git"."a30cc7a79a08d8108316094f8f2f82a0c5e1ac51" = "0yasvnr7g91k76mjkamvzab2kvlb1g5pspjyjn2fr6v83swjhj38"; "https://github.com/simplex-chat/direct-sqlcipher.git"."f814ee68b16a9447fbb467ccc8f29bdd3546bfd9" = "1ql13f4kfwkbaq7nygkxgw84213i0zm7c1a8hwvramayxl38dq5d"; "https://github.com/simplex-chat/sqlcipher-simple.git"."a46bd361a19376c5211f1058908fc0ae6bf42446" = "1z0r78d8f0812kxbgsm735qf6xx8lvaz27k1a0b4a2m0sshpd5gl"; diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 7200240256..c4799a5256 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -2244,6 +2244,7 @@ processChatCommand' vr = \case SubInfo {server, subError = Just e} -> M.alter (Just . maybe [e] (e :)) server m _ -> m GetAgentSubsDetails -> lift $ CRAgentSubsDetails <$> withAgent' getAgentSubscriptions + GetAgentSubsDiff -> lift $ CRAgentSubsDiff <$> withAgent' AC.diffSubscriptions -- CustomChatCommand is unsupported, it can be processed in preCmdHook -- in a modified CLI app or core - the hook should return Either ChatResponse ChatCommand CustomChatCommand _cmd -> withUser $ \user -> pure $ chatCmdError (Just user) "not supported" @@ -7408,6 +7409,7 @@ chatCommandP = "/reset stats" $> ResetAgentStats, "/get subs" $> GetAgentSubs, "/get subs details" $> GetAgentSubsDetails, + "/get subs diff" $> GetAgentSubsDiff, "/get workers" $> GetAgentWorkers, "/get workers details" $> GetAgentWorkersDetails, "//" *> (CustomChatCommand <$> A.takeByteString) diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index 06e78594b5..3aecd30509 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -66,7 +66,7 @@ import Simplex.Chat.Types.Shared import Simplex.Chat.Util (liftIOEither) import Simplex.FileTransfer.Description (FileDescriptionURI) import Simplex.Messaging.Agent (AgentClient, SubscriptionsInfo) -import Simplex.Messaging.Agent.Client (AgentLocks, AgentWorkersDetails (..), AgentWorkersSummary (..), ProtocolTestFailure, UserNetworkInfo) +import Simplex.Messaging.Agent.Client (AgentLocks, AgentWorkersDetails (..), AgentWorkersSummary (..), ProtocolTestFailure, SubscriptionsDiff, UserNetworkInfo) import Simplex.Messaging.Agent.Env.SQLite (AgentConfig, NetworkConfig) import Simplex.Messaging.Agent.Lock import Simplex.Messaging.Agent.Protocol @@ -514,6 +514,7 @@ data ChatCommand | ResetAgentStats | GetAgentSubs | GetAgentSubsDetails + | GetAgentSubsDiff | GetAgentWorkers | GetAgentWorkersDetails | -- The parser will return this command for strings that start from "//". @@ -763,6 +764,7 @@ data ChatResponse | CRAgentWorkersSummary {agentWorkersSummary :: AgentWorkersSummary} | CRAgentSubs {activeSubs :: Map Text Int, pendingSubs :: Map Text Int, removedSubs :: Map Text [String]} | CRAgentSubsDetails {agentSubs :: SubscriptionsInfo} + | CRAgentSubsDiff {agentSubsDiff :: SubscriptionsDiff} | CRConnectionDisabled {connectionEntity :: ConnectionEntity} | CRAgentRcvQueueDeleted {agentConnId :: AgentConnId, server :: SMPServer, agentQueueId :: AgentQueueId, agentError_ :: Maybe AgentErrorType} | CRAgentConnDeleted {agentConnId :: AgentConnId} diff --git a/src/Simplex/Chat/View.hs b/src/Simplex/Chat/View.hs index 0791420322..59258e8a67 100644 --- a/src/Simplex/Chat/View.hs +++ b/src/Simplex/Chat/View.hs @@ -372,6 +372,10 @@ responseToView hu@(currentRH, user_) ChatConfig {logLevel, showReactions, showRe <> ("pending subscriptions: " : map sShow pendingSubscriptions) <> ("removed subscriptions: " : map sShow removedSubscriptions) CRAgentWorkersSummary {agentWorkersSummary} -> ["agent workers summary: " <> plain (LB.unpack $ J.encode agentWorkersSummary)] + CRAgentSubsDiff asd -> + [ "agent subs diff:", + plain . LB.unpack $ J.encode asd + ] CRAgentWorkersDetails {agentWorkersDetails} -> [ "agent workers details:", plain . LB.unpack $ J.encode agentWorkersDetails -- this would be huge, but copypastable when has its own line