53
lol
53f3c3c898d9711d331ddcb36dfb5598b78fa289ff7fab4acf4aa01236e5866a

lemme try this

does it scroll?

updateDMSubscriptions :: InboxModelEff es => PubKeyXO -> Eff es ()

updateDMSubscriptions xo = do

kp <- getKeyPair

let ownPubkey = keyPairToPubKeyXO kp

when (xo == ownPubkey) $ do

dmRelayURIs <- getDMRelays xo

let dmRelaySet = Set.fromList dmRelayURIs

pool <- get @RelayPool

let giftwrapSubs =

[ (relayUri, subId)

| (subId, sd) <- Map.toList (subscriptions pool)

, GiftWrap `elem` fromMaybe [] (kinds $ subscriptionFilter sd)

, relayUri <- Map.keys (activeConnections pool)

, not (relayUri `Set.member` dmRelaySet)

]

-- Stop giftwrap subscriptions for relays not in dmRelaySet

void $ forConcurrently giftwrapSubs $ \(relayUri, subId) -> do

stopSubscription subId

let hasOtherSubs = any (\_ -> relayUri == relayUri)

(Map.elems $ subscriptions pool)

when (not hasOtherSubs) $ do

disconnect relayUri

let currentRelaySet = Map.keysSet (activeConnections pool)

let relaysToAdd = Set.difference dmRelaySet currentRelaySet

void $ forConcurrently (Set.toList relaysToAdd) $ \relayUri -> do

connected <- connect relayUri

when connected $ do

subscribeToGiftwraps relayUri xo

was war das???