diff --git a/src/chat/delivery/waku_client.nim b/src/chat/delivery/waku_client.nim index 8c1897e..5949411 100644 --- a/src/chat/delivery/waku_client.nim +++ b/src/chat/delivery/waku_client.nim @@ -458,44 +458,16 @@ proc start*(client: WakuClient) {.async.} = # materialises for our id; if the authoritative leaf differs, # rewrite lezGm.membershipIndex so subsequent proofs are valid. The # pre-publish self-verify rejects bad proofs in the meantime. - let optimisticLeafChat = success.leafIndex - let watcherClient = gifterClient - let watcherPeer = gifterPeer - let watcherIdCommit = idCommitmentBytes - asyncSpawn (proc(): Future[void] {.async.} = - const pollEveryMs = 30_000 - const deadlineMs = 1_800_000 - let deadline = Moment.now() + chronos.milliseconds(deadlineMs) - while Moment.now() < deadline: - try: - await sleepAsync(chronos.milliseconds(pollEveryMs)) - except CancelledError: - return - let qr = - try: - await watcherClient.queryMembershipStatus( - watcherPeer, configAccountId, watcherIdCommit) - except CancelledError: - return - except CatchableError as e: - Result[rln_gifter_protocol.MembershipStatusResponse, string].err( - "queryMembershipStatus raised: " & e.msg) - if qr.isErr: continue - let resp = qr.get() - if resp.errorMessage.isSome: continue - if not resp.registered: continue - if resp.leafIndex.isSome: - let authLeaf = resp.leafIndex.get() - if authLeaf != optimisticLeafChat: - info "Chat-client membership leaf corrected from optimistic", - optimistic = optimisticLeafChat, authoritative = authLeaf - lezGm.membershipIndex = - some(onchain_group_manager.MembershipIndex(authLeaf)) - mix_lez_client.setRlnConfig(configAccountId, authLeaf.int) - return - warn "Chat-client membership confirmation timed out", - optimisticLeaf = optimisticLeafChat - )() + let watcherLezGm = lezGm + let watcherConfigAccount = configAccountId + asyncSpawn gifterClient.watchMembershipConfirmation( + gifterPeer, configAccountId, idCommitmentBytes, success.leafIndex, + "Chat-client", + proc(authLeaf: uint64) {.gcsafe, raises: [].} = + watcherLezGm.membershipIndex = + some(onchain_group_manager.MembershipIndex(authLeaf)) + mix_lez_client.setRlnConfig(watcherConfigAccount, authLeaf.int), + ) asyncSpawn taskKeepAlive(client) diff --git a/vendor/nwaku b/vendor/nwaku index ce6f5c2..f354e9b 160000 --- a/vendor/nwaku +++ b/vendor/nwaku @@ -1 +1 @@ -Subproject commit ce6f5c2d5e184b7c94a65068d4e5f29936259020 +Subproject commit f354e9b2367be7a5cf9df352f7321b2283ad1a87