Skip to content

Commit

Permalink
update listener again
Browse files Browse the repository at this point in the history
  • Loading branch information
Sean Lee committed May 25, 2023
1 parent 22711f4 commit 643e48c
Showing 1 changed file with 27 additions and 19 deletions.
46 changes: 27 additions & 19 deletions Sources/Mercato/Mercato.swift
Original file line number Diff line number Diff line change
@@ -1,28 +1,32 @@
import Foundation
import StoreKit

public typealias TransactionUpdate = ((Transaction, String) async -> ())

public class Mercato {

private var purchaseController = PurchaseController()
private var productService = ProductService()

public init()
{

}

private var updateListenerTask: Task<(), Never>? = nil

func listenForTransactions() async -> [(Transaction, String)] {
var pending = [(Transaction, String)]()
for await result in Transaction.updates
public init() {}

fileprivate func listenForTransactions(updateBlock: @escaping TransactionUpdate) {
let task = Task.detached
{
do {
let transaction = try checkVerified(result)
pending.append((transaction, result.jwsRepresentation))
} catch {
print("Transaction failed verification")
for await result in Transaction.updates
{
do {
let transaction = try checkVerified(result)
await updateBlock(transaction, result.jwsRepresentation)
} catch {
print("Transaction failed verification")
}
}
}
return pending

self.updateListenerTask = task
}

//TODO: throw an error if productId are invalid
Expand Down Expand Up @@ -69,17 +73,21 @@ public class Mercato {
throw error
}
}

deinit {
updateListenerTask?.cancel()
}
}

extension Mercato
{
fileprivate static let shared: Mercato = .init()

public static func listenForTransactions() async -> [(Transaction, String)]
{
return await shared.listenForTransactions()
}
public static func listenForTransactions(updateBlock: @escaping TransactionUpdate)
{
shared.listenForTransactions(updateBlock: updateBlock)
}

public static func retrieveProducts(productIds: Set<String>) async throws -> [Product]
{
try await shared.retrieveProducts(productIds: productIds)
Expand Down

0 comments on commit 643e48c

Please sign in to comment.