use connections from getConnectionEntity for the subscribing user

This commit is contained in:
Alexander Bondarenko
2024-06-03 15:19:04 +03:00
parent 6548245883
commit baced8a6da
2 changed files with 7 additions and 5 deletions

View File

@@ -3355,9 +3355,9 @@ subscribeUserConnections vr onlyNeeded user = do
(conns, ctConns, ucs, gs, mConns, sfts, rfts, pcConns) <-
if onlyNeeded
then do
(conns, entities) <- withStore' $ \a -> getConnectionsToSubscribe a vr user
let (ctConns, ucs, mConns, sfts, rfts, pcConns) = foldl' addEntity ([], [], [], M.empty, M.empty, []) entities
pure (conns, ctConns, ucs, [], mConns, sfts, rfts, pcConns)
(conns, entities) <- withStore' $ \db -> getConnectionsToSubscribe db vr user
let (cts, ucs, ms, sfts, rfts, pcs) = foldl' addEntity ([], [], [], M.empty, M.empty, []) entities
pure (conns, cts, ucs, [], ms, sfts, rfts, pcs)
else do
withStore' (`unsetConnectionToSubscribe` user)
ctConns <- getContactConns

View File

@@ -214,9 +214,11 @@ getContactConnEntityByConnReqHash db vr user@User {userId} (cReqHash1, cReqHash2
getConnectionsToSubscribe :: DB.Connection -> VersionRangeChat -> User -> IO ([ConnId], [ConnectionEntity])
getConnectionsToSubscribe db vr user@User {userId} = do
connIds <- map fromOnly <$> DB.query db "SELECT agent_conn_id FROM connections WHERE user_id = ? AND to_subscribe = 1" (Only userId)
aConnIds <- map fromOnly <$> DB.query db "SELECT agent_conn_id FROM connections WHERE to_subscribe = 1 AND user_id = ?" (Only userId)
entities <- forM aConnIds $ \acId ->
eitherToMaybe <$> runExceptT (getConnectionEntity db vr user acId)
unsetConnectionToSubscribe db user
entities <- forM connIds $ fmap eitherToMaybe . runExceptT . getConnectionEntity db vr user . AgentConnId
let connIds = map (\(AgentConnId connId) -> connId) aConnIds
pure (connIds, catMaybes entities)
unsetConnectionToSubscribe :: DB.Connection -> User -> IO ()