diff --git a/Sources/WalletConnectPairing/PairingClient.swift b/Sources/WalletConnectPairing/PairingClient.swift index 7443adee..db45022f 100644 --- a/Sources/WalletConnectPairing/PairingClient.swift +++ b/Sources/WalletConnectPairing/PairingClient.swift @@ -62,12 +62,23 @@ public class PairingClient: PairingRegisterer, PairingInteracting, PairingClient self.pairingsProvider = pairingsProvider self.pairingStateProvider = pairingStateProvider setUpExpiration() + subscribePairingTopics() } private func setUpExpiration() { expirationService.setupExpirationHandling() } + private func subscribePairingTopics() { + let topics = pairingStorage + .getAll() + .filter{!$0.requestReceived} + .map{$0.topic} + Task(priority: .background) { + try await networkingInteractor.batchSubscribe(topics: topics) + } + } + /// For wallet to establish a pairing /// Wallet should call this function in order to accept peer's pairing proposal and be able to subscribe for future requests. /// - Parameter uri: Pairing URI that is commonly presented as a QR code by a dapp or delivered with universal linking. diff --git a/Tests/RelayerTests/AutomaticSocketConnectionHandlerTests.swift b/Tests/RelayerTests/AutomaticSocketConnectionHandlerTests.swift index 00ba8531..287afe15 100644 --- a/Tests/RelayerTests/AutomaticSocketConnectionHandlerTests.swift +++ b/Tests/RelayerTests/AutomaticSocketConnectionHandlerTests.swift @@ -200,36 +200,36 @@ final class AutomaticSocketConnectionHandlerTests: XCTestCase { await fulfillment(of: [expectation], timeout: 15.0) } - func testSwitchesToPeriodicReconnectionAfterMaxImmediateAttempts() async { - subscriptionsTracker.isSubscribedReturnValue = true // Ensure subscriptions exist to allow reconnection - sut.periodicReconnectionInterval = 3 // Set shorter interval for testing - webSocketSession.blockConnection = true - sut.connect() // Start connection process - - // Simulate immediate reconnection attempts - Task(priority: .high) { - try? await Task.sleep(nanoseconds: 100_000_000) // 200ms - for _ in 0..