@@ -97,6 +97,7 @@ module Simplex.Messaging.Agent
9797 reconnectSMPServer ,
9898 registerNtfToken ,
9999 verifyNtfToken ,
100+ verifySavedNtfToken ,
100101 checkNtfToken ,
101102 deleteNtfToken ,
102103 getNtfToken ,
@@ -592,6 +593,11 @@ verifyNtfToken :: AgentClient -> NetworkRequestMode -> DeviceToken -> C.CbNonce
592593verifyNtfToken c = withAgentEnv c .:: verifyNtfToken' c
593594{-# INLINE verifyNtfToken #-}
594595
596+ -- | Verify saved device notifications token
597+ verifySavedNtfToken :: AgentClient -> NetworkRequestMode -> ByteString -> AE ()
598+ verifySavedNtfToken c = withAgentEnv c .: verifySavedNtfToken' c
599+ {-# INLINE verifySavedNtfToken #-}
600+
595601checkNtfToken :: AgentClient -> NetworkRequestMode -> DeviceToken -> AE NtfTknStatus
596602checkNtfToken c = withAgentEnv c .: checkNtfToken' c
597603{-# INLINE checkNtfToken #-}
@@ -2359,6 +2365,19 @@ verifyNtfToken' c nm deviceToken nonce code =
23592365 when (ntfMode == NMInstant ) $ initializeNtfSubs c
23602366 _ -> throwE $ CMD PROHIBITED " verifyNtfToken: no token"
23612367
2368+ verifySavedNtfToken' :: AgentClient -> NetworkRequestMode -> ByteString -> AM ()
2369+ verifySavedNtfToken' c nm code =
2370+ withStore' c getSavedNtfToken >>= \ case
2371+ Just tkn@ NtfToken {ntfTokenId = Just tknId, ntfMode} -> do
2372+ let code' = NtfRegCode code
2373+ toStatus <-
2374+ withToken c nm tkn (Just (NTConfirmed , NTAVerify code')) (NTActive , Just NTACheck ) $
2375+ agentNtfVerifyToken c nm tknId tkn code'
2376+ when (toStatus == NTActive ) $ do
2377+ lift $ setCronInterval c nm tknId tkn
2378+ when (ntfMode == NMInstant ) $ initializeNtfSubs c
2379+ _ -> throwE $ CMD PROHIBITED " verifySavedNtfToken: no token"
2380+
23622381setCronInterval :: AgentClient -> NetworkRequestMode -> NtfTokenId -> NtfToken -> AM' ()
23632382setCronInterval c nm tknId tkn = do
23642383 cron <- asks $ ntfCron . config
0 commit comments