Skip to content

Commit e21323a

Browse files
committed
use dependent types for push providers and ntf tokens
1 parent 1007deb commit e21323a

File tree

19 files changed

+243
-155
lines changed

19 files changed

+243
-155
lines changed

src/Simplex/Messaging/Agent.hs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ import qualified Simplex.Messaging.Crypto.ShortLink as SL
201201
import qualified Simplex.Messaging.Crypto.Ratchet as CR
202202
import Simplex.Messaging.Encoding
203203
import Simplex.Messaging.Encoding.String
204-
import Simplex.Messaging.Notifications.Protocol (DeviceToken, NtfRegCode (NtfRegCode), NtfTknStatus (..), NtfTokenId, PNMessageData (..), pnMessagesP)
204+
import Simplex.Messaging.Notifications.Protocol (ADeviceToken, NtfRegCode (NtfRegCode), NtfTknStatus (..), NtfTokenId, PNMessageData (..), pnMessagesP)
205205
import Simplex.Messaging.Notifications.Types
206206
import Simplex.Messaging.Parsers (defaultJSON, parse)
207207
import Simplex.Messaging.Protocol
@@ -619,24 +619,24 @@ reconnectAllServers c = do
619619
reconnectServerClients c ntfClients
620620

621621
-- | Register device notifications token
622-
registerNtfToken :: AgentClient -> NetworkRequestMode -> DeviceToken -> NotificationsMode -> AE NtfTknStatus
622+
registerNtfToken :: AgentClient -> NetworkRequestMode -> ADeviceToken -> NotificationsMode -> AE NtfTknStatus
623623
registerNtfToken c = withAgentEnv c .:. registerNtfToken' c
624624
{-# INLINE registerNtfToken #-}
625625

626626
-- | Verify device notifications token
627-
verifyNtfToken :: AgentClient -> NetworkRequestMode -> DeviceToken -> C.CbNonce -> ByteString -> AE ()
627+
verifyNtfToken :: AgentClient -> NetworkRequestMode -> ADeviceToken -> C.CbNonce -> ByteString -> AE ()
628628
verifyNtfToken c = withAgentEnv c .:: verifyNtfToken' c
629629
{-# INLINE verifyNtfToken #-}
630630

631-
checkNtfToken :: AgentClient -> NetworkRequestMode -> DeviceToken -> AE NtfTknStatus
631+
checkNtfToken :: AgentClient -> NetworkRequestMode -> ADeviceToken -> AE NtfTknStatus
632632
checkNtfToken c = withAgentEnv c .: checkNtfToken' c
633633
{-# INLINE checkNtfToken #-}
634634

635-
deleteNtfToken :: AgentClient -> DeviceToken -> AE ()
635+
deleteNtfToken :: AgentClient -> ADeviceToken -> AE ()
636636
deleteNtfToken c = withAgentEnv c . deleteNtfToken' c
637637
{-# INLINE deleteNtfToken #-}
638638

639-
getNtfToken :: AgentClient -> AE (DeviceToken, NtfTknStatus, NotificationsMode, NtfServer)
639+
getNtfToken :: AgentClient -> AE (ADeviceToken, NtfTknStatus, NotificationsMode, NtfServer)
640640
getNtfToken c = withAgentEnv c $ getNtfToken' c
641641
{-# INLINE getNtfToken #-}
642642

@@ -2453,7 +2453,7 @@ checkUserServers name srvs =
24532453
unless (any (\ServerCfg {enabled} -> enabled) srvs) $
24542454
logWarn (name <> ": all passed servers are disabled, using all servers.")
24552455

2456-
registerNtfToken' :: AgentClient -> NetworkRequestMode -> DeviceToken -> NotificationsMode -> AM NtfTknStatus
2456+
registerNtfToken' :: AgentClient -> NetworkRequestMode -> ADeviceToken -> NotificationsMode -> AM NtfTknStatus
24572457
registerNtfToken' c nm suppliedDeviceToken suppliedNtfMode =
24582458
withStore' c getSavedNtfToken >>= \case
24592459
Just tkn@NtfToken {deviceToken = savedDeviceToken, ntfTokenId, ntfTknStatus, ntfTknAction, ntfMode = savedNtfMode} -> do
@@ -2530,7 +2530,7 @@ registerNtfToken' c nm suppliedDeviceToken suppliedNtfMode =
25302530
ns <- asks ntfSupervisor
25312531
atomically $ nsUpdateToken ns tkn {deviceToken = suppliedDeviceToken, ntfTknStatus = NTRegistered, ntfMode = suppliedNtfMode}
25322532

2533-
verifyNtfToken' :: AgentClient -> NetworkRequestMode -> DeviceToken -> C.CbNonce -> ByteString -> AM ()
2533+
verifyNtfToken' :: AgentClient -> NetworkRequestMode -> ADeviceToken -> C.CbNonce -> ByteString -> AM ()
25342534
verifyNtfToken' c nm deviceToken nonce code =
25352535
withStore' c getSavedNtfToken >>= \case
25362536
Just tkn@NtfToken {deviceToken = savedDeviceToken, ntfTokenId = Just tknId, ntfDhSecret = Just dhSecret, ntfMode} -> do
@@ -2549,7 +2549,7 @@ setCronInterval c nm tknId tkn = do
25492549
cron <- asks $ ntfCron . config
25502550
void $ forkIO $ void $ runExceptT $ agentNtfSetCronInterval c nm tknId tkn cron
25512551

2552-
checkNtfToken' :: AgentClient -> NetworkRequestMode -> DeviceToken -> AM NtfTknStatus
2552+
checkNtfToken' :: AgentClient -> NetworkRequestMode -> ADeviceToken -> AM NtfTknStatus
25532553
checkNtfToken' c nm deviceToken =
25542554
withStore' c getSavedNtfToken >>= \case
25552555
Just tkn@NtfToken {deviceToken = savedDeviceToken, ntfTokenId = Just tknId, ntfTknAction} -> do
@@ -2563,7 +2563,7 @@ checkNtfToken' c nm deviceToken =
25632563
pure status
25642564
_ -> throwE $ CMD PROHIBITED "checkNtfToken: no token"
25652565

2566-
deleteNtfToken' :: AgentClient -> DeviceToken -> AM ()
2566+
deleteNtfToken' :: AgentClient -> ADeviceToken -> AM ()
25672567
deleteNtfToken' c deviceToken =
25682568
withStore' c getSavedNtfToken >>= \case
25692569
Just tkn@NtfToken {deviceToken = savedDeviceToken} -> do
@@ -2572,7 +2572,7 @@ deleteNtfToken' c deviceToken =
25722572
deleteNtfSubs c NSCSmpDelete
25732573
_ -> throwE $ CMD PROHIBITED "deleteNtfToken: no token"
25742574

2575-
getNtfToken' :: AgentClient -> AM (DeviceToken, NtfTknStatus, NotificationsMode, NtfServer)
2575+
getNtfToken' :: AgentClient -> AM (ADeviceToken, NtfTknStatus, NotificationsMode, NtfServer)
25762576
getNtfToken' c =
25772577
withStore' c getSavedNtfToken >>= \case
25782578
Just NtfToken {deviceToken, ntfTknStatus, ntfMode, ntfServer} -> pure (deviceToken, ntfTknStatus, ntfMode, ntfServer)

src/Simplex/Messaging/Agent/Client.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1322,7 +1322,7 @@ runNTFServerTest c@AgentClient {presetDomains} nm userId (ProtoServerWithAuth sr
13221322
(nKey, npKey) <- atomically $ C.generateAuthKeyPair a g
13231323
(dhKey, _) <- atomically $ C.generateKeyPair g
13241324
r <- runExceptT $ do
1325-
let deviceToken = APNSDeviceToken PPApnsNull "test_ntf_token"
1325+
let deviceToken = ADT SAPNS $ APNSDeviceToken PPApnsNull "test_ntf_token"
13261326
(tknId, _) <- liftError (testErr TSCreateNtfToken) $ ntfRegisterToken ntf nm npKey (NewNtfTkn deviceToken nKey dhKey)
13271327
liftError (testErr TSDeleteNtfToken) $ ntfDeleteToken ntf nm npKey tknId
13281328
ok <- netTimeoutInt (tcpTimeout $ networkConfig cfg) nm `timeout` closeProtocolClient ntf
@@ -1972,7 +1972,7 @@ agentNtfCheckToken :: AgentClient -> NetworkRequestMode -> NtfTokenId -> NtfToke
19721972
agentNtfCheckToken c nm tknId NtfToken {ntfServer, ntfPrivKey} =
19731973
withNtfClient c nm ntfServer tknId "TCHK" $ \ntf -> ntfCheckToken ntf nm ntfPrivKey tknId
19741974

1975-
agentNtfReplaceToken :: AgentClient -> NetworkRequestMode -> NtfTokenId -> NtfToken -> DeviceToken -> AM ()
1975+
agentNtfReplaceToken :: AgentClient -> NetworkRequestMode -> NtfTokenId -> NtfToken -> ADeviceToken -> AM ()
19761976
agentNtfReplaceToken c nm tknId NtfToken {ntfServer, ntfPrivKey} token =
19771977
withNtfClient c nm ntfServer tknId "TRPL" $ \ntf -> ntfReplaceToken ntf nm ntfPrivKey tknId token
19781978

src/Simplex/Messaging/Agent/Store/AgentStore.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ import Simplex.Messaging.Crypto.Ratchet (PQEncryption (..), PQSupport (..), Ratc
294294
import qualified Simplex.Messaging.Crypto.Ratchet as CR
295295
import Simplex.Messaging.Encoding
296296
import Simplex.Messaging.Encoding.String
297-
import Simplex.Messaging.Notifications.Protocol (DeviceToken (..), NtfSubscriptionId, NtfTknStatus (..), NtfTokenId, SMPQueueNtf (..), deviceTokenFields, deviceToken')
297+
import Simplex.Messaging.Notifications.Protocol (ADeviceToken (..), NtfSubscriptionId, NtfTknStatus (..), NtfTokenId, SMPQueueNtf (..), deviceToken', deviceTokenFields)
298298
import Simplex.Messaging.Notifications.Types
299299
import Simplex.Messaging.Parsers (parseAll)
300300
import Simplex.Messaging.Protocol
@@ -1464,7 +1464,7 @@ updateNtfTokenRegistration db NtfToken {deviceToken, ntfServer = ProtocolServer
14641464
|]
14651465
(tknId, ntfDhSecret, NTRegistered, Nothing :: Maybe NtfTknAction, updatedAt, provider, token, host, port)
14661466

1467-
updateDeviceToken :: DB.Connection -> NtfToken -> DeviceToken -> IO ()
1467+
updateDeviceToken :: DB.Connection -> NtfToken -> ADeviceToken -> IO ()
14681468
updateDeviceToken db NtfToken {deviceToken, ntfServer = ProtocolServer {host, port}} toDt = do
14691469
let (provider, token) = deviceTokenFields deviceToken
14701470
updatedAt <- getCurrentTime

src/Simplex/Messaging/Notifications/Client.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ ntfCheckToken c nm pKey tknId =
4343
NRTkn stat -> pure stat
4444
r -> throwE $ unexpectedResponse r
4545

46-
ntfReplaceToken :: NtfClient -> NetworkRequestMode -> C.APrivateAuthKey -> NtfTokenId -> DeviceToken -> ExceptT NtfClientError IO ()
46+
ntfReplaceToken :: NtfClient -> NetworkRequestMode -> C.APrivateAuthKey -> NtfTokenId -> ADeviceToken -> ExceptT NtfClientError IO ()
4747
ntfReplaceToken c nm pKey tknId token = okNtfCommand (TRPL token) c nm pKey tknId
4848

4949
ntfDeleteToken :: NtfClient -> NetworkRequestMode -> C.APrivateAuthKey -> NtfTokenId -> ExceptT NtfClientError IO ()

0 commit comments

Comments
 (0)