Skip to content

Commit

Permalink
add delete subscriber to wallet
Browse files Browse the repository at this point in the history
  • Loading branch information
llbartekll committed Jun 22, 2023
1 parent a32f13c commit 1c47de3
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 26 deletions.
6 changes: 3 additions & 3 deletions Example/IntegrationTests/Push/PushTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -192,12 +192,12 @@ final class PushTests: XCTestCase {
Task(priority: .high) { try! await walletPushClient.approve(id: id, onSign: sign) }
}.store(in: &publishers)

dappPushClient.responsePublisher.sink { [unowned self] (_, result) in
guard case .success(let result) = result else {
dappPushClient.proposalResponsePublisher.sink { [unowned self] (result) in
guard case .success(let pushSubscription) = result else {
XCTFail()
return
}
subscriptionTopic = result.pushSubscription.topic
subscriptionTopic = pushSubscription.topic
Task(priority: .userInitiated) { try! await dappPushClient.delete(topic: result.pushSubscription.topic)}
}.store(in: &publishers)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ class DeletePushSubscriptionSubscriber {
private var publishers = [AnyCancellable]()
private let pushSubscriptionStore: CodableStore<PushSubscription>

var onDelete: ((String) -> Void)?
private let deleteSubscriptionPublisherSubject = PassthroughSubject<String, Never>()

public var deleteSubscriptionPublisher: AnyPublisher<String, Never> {
deleteSubscriptionPublisherSubject.eraseToAnyPublisher()
}

init(networkingInteractor: NetworkInteracting,
kms: KeyManagementServiceProtocol,
Expand All @@ -33,7 +37,7 @@ class DeletePushSubscriptionSubscriber {
networkingInteractor.unsubscribe(topic: topic)
pushSubscriptionStore.delete(forKey: topic)
kms.deleteSymmetricKey(for: topic)
onDelete?(payload.topic)
deleteSubscriptionPublisherSubject.send(payload.topic)
}.store(in: &publishers)
}
}
14 changes: 1 addition & 13 deletions Sources/WalletConnectPush/Client/Dapp/DappPushClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,8 @@ public class DappPushClient {
return notifyProposeResponseSubscriber.proposalResponsePublisher
}

private let deleteSubscriptionPublisherSubject = PassthroughSubject<String, Never>()

public var deleteSubscriptionPublisher: AnyPublisher<String, Never> {
deleteSubscriptionPublisherSubject.eraseToAnyPublisher()
deletePushSubscriptionSubscriber.deleteSubscriptionPublisher
}

public let logger: ConsoleLogging
Expand All @@ -34,7 +32,6 @@ public class DappPushClient {
self.resubscribeService = resubscribeService
self.notifyProposer = notifyProposer
self.notifyProposeResponseSubscriber = notifyProposeResponseSubscriber
setupSubscriptions()
}

public func propose(account: Account, topic: String) async throws {
Expand All @@ -45,12 +42,3 @@ public class DappPushClient {
subscriptionsProvider.getActiveSubscriptions()
}
}

private extension DappPushClient {

func setupSubscriptions() {
deletePushSubscriptionSubscriber.onDelete = {[unowned self] topic in
deleteSubscriptionPublisherSubject.send(topic)
}
}
}
16 changes: 9 additions & 7 deletions Sources/WalletConnectPush/Client/Wallet/WalletPushClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ public class WalletPushClient {

private var publishers = Set<AnyCancellable>()

private let deletePushSubscriptionSubscriber: DeletePushSubscriptionSubscriber

public var deleteSubscriptionPublisher: AnyPublisher<String, Never> {
deletePushSubscriptionSubscriber.deleteSubscriptionPublisher
}

/// publishes new subscriptions
public var subscriptionPublisher: AnyPublisher<Result<PushSubscription, Error>, Never> {
return pushSubscribeResponseSubscriber.subscriptionPublisher
Expand All @@ -27,12 +33,6 @@ public class WalletPushClient {
pushMessageSubscriber.pushMessagePublisher
}

private let deleteSubscriptionPublisherSubject = PassthroughSubject<String, Never>()

public var deleteSubscriptionPublisher: AnyPublisher<String, Never> {
deleteSubscriptionPublisherSubject.eraseToAnyPublisher()
}

public var updateSubscriptionPublisher: AnyPublisher<Result<PushSubscription, Error>, Never> {
return notifyUpdateResponseSubscriber.updateSubscriptionPublisher
}
Expand Down Expand Up @@ -67,7 +67,8 @@ public class WalletPushClient {
notifyUpdateRequester: NotifyUpdateRequester,
notifyUpdateResponseSubscriber: NotifyUpdateResponseSubscriber,
notifyProposeResponder: NotifyProposeResponder,
notifyProposeSubscriber: NotifyProposeSubscriber
notifyProposeSubscriber: NotifyProposeSubscriber,
deletePushSubscriptionSubscriber: DeletePushSubscriptionSubscriber
) {
self.logger = logger
self.echoClient = echoClient
Expand All @@ -83,6 +84,7 @@ public class WalletPushClient {
self.notifyUpdateResponseSubscriber = notifyUpdateResponseSubscriber
self.notifyProposeResponder = notifyProposeResponder
self.notifyProposeSubscriber = notifyProposeSubscriber
self.deletePushSubscriptionSubscriber = deletePushSubscriptionSubscriber
}

public func subscribe(metadata: AppMetadata, account: Account, onSign: @escaping SigningCallback) async throws {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ public struct WalletPushClientFactory {

let notifyProposeSubscriber = NotifyProposeSubscriber(networkingInteractor: networkInteractor, subscriptionsStore: subscriptionStore, logger: logger, pairingRegisterer: pairingRegisterer)

let deletePushSubscriptionSubscriber = DeletePushSubscriptionSubscriber(networkingInteractor: networkInteractor, kms: kms, logger: logger, pushSubscriptionStore: subscriptionStore)

return WalletPushClient(
logger: logger,
kms: kms,
Expand All @@ -80,7 +82,8 @@ public struct WalletPushClientFactory {
notifyUpdateRequester: notifyUpdateRequester,
notifyUpdateResponseSubscriber: notifyUpdateResponseSubscriber,
notifyProposeResponder: notifyProposeResponder,
notifyProposeSubscriber: notifyProposeSubscriber
notifyProposeSubscriber: notifyProposeSubscriber,
deletePushSubscriptionSubscriber: deletePushSubscriptionSubscriber
)
}
}

0 comments on commit 1c47de3

Please sign in to comment.