From 30e15b881faeff9cd4bd7972d8e6cd616bbefec9 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Wed, 11 Sep 2024 22:30:59 +0400 Subject: [PATCH] agent: don't prohibit deletion of notifications token if different is passed (fixes turning notifications off after importing database) (#1308) * agent: don't prohibit deletion of notifications token if different is passed (fixes turning notifications off after importing database) * ignore error * notify --- src/Simplex/Messaging/Agent.hs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Simplex/Messaging/Agent.hs b/src/Simplex/Messaging/Agent.hs index e8aa309df..1dc86d081 100644 --- a/src/Simplex/Messaging/Agent.hs +++ b/src/Simplex/Messaging/Agent.hs @@ -1984,7 +1984,7 @@ deleteNtfToken' :: AgentClient -> DeviceToken -> AM () deleteNtfToken' c deviceToken = withStore' c getSavedNtfToken >>= \case Just tkn@NtfToken {deviceToken = savedDeviceToken} -> do - when (deviceToken /= savedDeviceToken) . throwE $ CMD PROHIBITED "deleteNtfToken: different token" + when (deviceToken /= savedDeviceToken) $ logWarn "deleteNtfToken: different token" deleteToken_ c tkn deleteNtfSubs c NSCSmpDelete _ -> throwE $ CMD PROHIBITED "deleteNtfToken: no token" @@ -2021,17 +2021,18 @@ toggleConnectionNtfs' c connId enable = do atomically $ sendNtfSubCommand ns (connId, cmd) deleteToken_ :: AgentClient -> NtfToken -> AM () -deleteToken_ c tkn@NtfToken {ntfTokenId, ntfTknStatus} = do +deleteToken_ c@AgentClient {subQ} tkn@NtfToken {ntfTokenId, ntfTknStatus} = do ns <- asks ntfSupervisor forM_ ntfTokenId $ \tknId -> do let ntfTknAction = Just NTADelete withStore' c $ \db -> updateNtfToken db tkn ntfTknStatus ntfTknAction atomically $ nsUpdateToken ns tkn {ntfTknStatus, ntfTknAction} - agentNtfDeleteToken c tknId tkn `catchAgentError` \case - NTF _ AUTH -> pure () - e -> throwE e + agentNtfDeleteToken c tknId tkn `catchAgentError` \e -> notify (ERR e) -- TODO cleanup task withStore' c $ \db -> removeNtfToken db tkn atomically $ nsRemoveNtfToken ns + where + notify :: forall e. AEntityI e => AEvent e -> AM () + notify cmd = atomically $ writeTBQueue subQ ("", "", AEvt (sAEntity @e) cmd) withToken :: AgentClient -> NtfToken -> Maybe (NtfTknStatus, NtfTknAction) -> (NtfTknStatus, Maybe NtfTknAction) -> AM a -> AM NtfTknStatus withToken c tkn@NtfToken {deviceToken, ntfMode} from_ (toStatus, toAction_) f = do