[sales] onSale() callback is optional
This commit is contained in:
parent
11f7b4b4d8
commit
5d434f20d3
|
@ -16,7 +16,7 @@ type
|
||||||
subscription: ?Subscription
|
subscription: ?Subscription
|
||||||
available*: seq[Availability]
|
available*: seq[Availability]
|
||||||
offerExpiryInterval*: UInt256
|
offerExpiryInterval*: UInt256
|
||||||
onSale*: OnSale
|
onSale: ?OnSale
|
||||||
Availability* = object
|
Availability* = object
|
||||||
id*: array[32, byte]
|
id*: array[32, byte]
|
||||||
size*: uint64
|
size*: uint64
|
||||||
|
@ -35,6 +35,9 @@ proc init*(_: type Availability,
|
||||||
doAssert randomBytes(id) == 32
|
doAssert randomBytes(id) == 32
|
||||||
Availability(id: id, size: size, duration: duration, minPrice: minPrice)
|
Availability(id: id, size: size, duration: duration, minPrice: minPrice)
|
||||||
|
|
||||||
|
proc `onSale=`*(sales: Sales, callback: OnSale) =
|
||||||
|
sales.onSale = some callback
|
||||||
|
|
||||||
func add*(sales: Sales, availability: Availability) =
|
func add*(sales: Sales, availability: Availability) =
|
||||||
sales.available.add(availability)
|
sales.available.add(availability)
|
||||||
|
|
||||||
|
@ -70,8 +73,8 @@ proc handleRequest(sales: Sales, request: StorageRequest) {.async.} =
|
||||||
proc onSelect(offerId: array[32, byte]) {.gcsafe, upraises:[].} =
|
proc onSelect(offerId: array[32, byte]) {.gcsafe, upraises:[].} =
|
||||||
if subscription =? subscription:
|
if subscription =? subscription:
|
||||||
asyncSpawn subscription.unsubscribe()
|
asyncSpawn subscription.unsubscribe()
|
||||||
if offer.id == offerId:
|
if onSale =? sales.onSale and offer.id == offerId:
|
||||||
sales.onSale(offer)
|
onSale(offer)
|
||||||
subscription = some await sales.market.subscribeSelection(request.id, onSelect)
|
subscription = some await sales.market.subscribeSelection(request.id, onSelect)
|
||||||
|
|
||||||
proc start*(sales: Sales) =
|
proc start*(sales: Sales) =
|
||||||
|
|
Loading…
Reference in New Issue