diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index e811211780..be747c42c8 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -3343,7 +3343,7 @@ subscribeUserConnections vr onlyNeeded user = do let (ctConns, ucs, mConns, sfts, rfts, pcConns) = foldl' addEntity ([], M.empty, [], M.empty, M.empty, []) entities pure (conns, ctConns, ucs, [], mConns, sfts, rfts, pcConns) else do - withStore' unsetConnectionToSubscribe + withStore' (`unsetConnectionToSubscribe` user) ctConns <- getContactConns (ucConns, ucs) <- getUserContactLinkConns (gs, mConns) <- getGroupMemberConns diff --git a/src/Simplex/Chat/Store/Connections.hs b/src/Simplex/Chat/Store/Connections.hs index ca84dadcc1..34f66a5d64 100644 --- a/src/Simplex/Chat/Store/Connections.hs +++ b/src/Simplex/Chat/Store/Connections.hs @@ -213,12 +213,10 @@ getContactConnEntityByConnReqHash db vr user@User {userId} (cReqHash1, cReqHash2 getConnectionsToSubscribe :: DB.Connection -> VersionRangeChat -> User -> IO ([ConnId], [ConnectionEntity]) getConnectionsToSubscribe db vr user@User {userId} = do - aConnIds <- map fromOnly <$> DB.query db "SELECT agent_conn_id FROM connections WHERE c.user_id = ? AND to_subscribe = 1" (Only userId) - unsetConnectionToSubscribe db - entities <- forM aConnIds $ \acId -> eitherToMaybe <$> runExceptT (getConnectionEntity db vr user acId) - unsetConnectionToSubscribe db - let connIds = map (\(AgentConnId connId) -> connId) aConnIds + connIds <- map fromOnly <$> DB.query db "SELECT agent_conn_id FROM connections WHERE user_id = ? AND to_subscribe = 1" (Only userId) + unsetConnectionToSubscribe db user + entities <- forM connIds $ fmap eitherToMaybe . runExceptT . getConnectionEntity db vr user . AgentConnId pure (connIds, catMaybes entities) -unsetConnectionToSubscribe :: DB.Connection -> IO () -unsetConnectionToSubscribe db = DB.execute_ db "UPDATE connections SET to_subscribe = 0 WHERE to_subscribe = 1" +unsetConnectionToSubscribe :: DB.Connection -> User -> IO () +unsetConnectionToSubscribe db User {userId} = DB.execute db "UPDATE connections SET to_subscribe = 0 WHERE user_id = ? AND to_subscribe = 1" (Only userId)