From f0c12822c727ec48ac4a56d66e3c6364bbbe305b Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Fri, 30 Jul 2021 21:32:47 -0500 Subject: [PATCH] Don't leave if just renaming --- Session.hs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Session.hs b/Session.hs index 99501b7..d84243b 100644 --- a/Session.hs +++ b/Session.hs @@ -16,13 +16,19 @@ import Util cleanOld :: Config.Config -> XMPP.JID -> XMPP.XMPP () cleanOld config source = do old <- liftIO $ DB.query (Config.db config) - (s"SELECT target_muc, target_nick, source_nick FROM sessions WHERE version < ? AND source_muc = ?") + (s"SELECT target_muc, target_nick, source_nick, (SELECT COUNT(1) FROM sessions s where s.source_muc=sessions.source_muc AND s.target_muc=sessions.target_muc AND s.source_nick=sessions.source_nick) FROM sessions WHERE version < ? AND source_muc = ?") (Config.dbVersion config, bareTxt source) - forM_ old $ \(muc, nick, source_nick) -> - let Just target = XMPP.parseJID $ muc ++ s"/" ++ nick in - sendPresence config ((XMPP.emptyPresence XMPP.PresenceUnavailable) { - XMPP.presenceFrom = XMPP.parseJID $ bareTxt source ++ s"/" ++ source_nick - }) target + forM_ old $ \(muc, nick, source_nick, count) -> + let + Just target = XMPP.parseJID $ muc ++ s"/" ++ nick + Just source = XMPP.parseJID $ bareTxt source ++ s"/" ++ source_nick + in + if count > (1::Int) then + mkSession config XMPP.PresenceUnavailable (Just source) target + else + sendPresence config ((XMPP.emptyPresence XMPP.PresenceUnavailable) { + XMPP.presenceFrom = Just source + }) target mkSession :: (MonadIO m) => Config.Config -- 2.34.4