From d3bc22726a0e282422a3fad976e18a5b7011b99c Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Wed, 14 May 2025 11:25:24 +0000 Subject: [PATCH] core: fix group being displayed as connecting after join (#5908) --- src/Simplex/Chat/Library/Subscriber.hs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/Simplex/Chat/Library/Subscriber.hs b/src/Simplex/Chat/Library/Subscriber.hs index 16b6ac3cd5..f9d242ff27 100644 --- a/src/Simplex/Chat/Library/Subscriber.hs +++ b/src/Simplex/Chat/Library/Subscriber.hs @@ -769,20 +769,22 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = withAgent $ \a -> toggleConnectionNtfs a (aConnId conn) $ chatHasNtfs chatSettings case memberCategory m of GCHostMember -> do - (mStatus, membershipStatus) <- withStore' $ \db -> do + (m', gInfo') <- withStore' $ \db -> do updateGroupMemberStatus db userId m GSMemConnected - membershipStatus <- + gInfo' <- if not (memberPending membership) - then updateGroupMemberStatus db userId membership GSMemConnected $> GSMemConnected - else pure $ memberStatus membership - pure (GSMemConnected, membershipStatus) - toView $ CEvtUserJoinedGroup user gInfo {membership = membership {memberStatus = membershipStatus}} m {memberStatus = mStatus} - (gInfo', m', scopeInfo) <- mkGroupChatScope gInfo m - let cd = CDGroupRcv gInfo' scopeInfo m' + then do + updateGroupMemberStatus db userId membership GSMemConnected + pure gInfo {membership = membership {memberStatus = GSMemConnected}} + else pure gInfo + pure (m {memberStatus = GSMemConnected}, gInfo') + toView $ CEvtUserJoinedGroup user gInfo' m' + (gInfo'', m'', scopeInfo) <- mkGroupChatScope gInfo' m' + let cd = CDGroupRcv gInfo'' scopeInfo m'' createInternalChatItem user cd (CIRcvGroupE2EEInfo E2EInfo {pqEnabled = PQEncOff}) Nothing - createGroupFeatureItems user cd CIRcvGroupFeature gInfo' - memberConnectedChatItem gInfo' scopeInfo m' - unless (memberPending membership) $ maybeCreateGroupDescrLocal gInfo' m' + createGroupFeatureItems user cd CIRcvGroupFeature gInfo'' + memberConnectedChatItem gInfo'' scopeInfo m'' + unless (memberPending membership) $ maybeCreateGroupDescrLocal gInfo'' m'' GCInviteeMember -> do (gInfo', mStatus) <- if not (memberPending m)