1
0
mirror of https://github.com/oceanprotocol-archive/squid-js.git synced 2024-02-02 15:31:51 +01:00

added executeAgreement event listener

This commit is contained in:
Sebastian Gerske 2018-11-23 16:09:31 +01:00
parent a904649c33
commit 3bf09e63a1
3 changed files with 13 additions and 12 deletions

View File

@ -172,21 +172,23 @@ export default class Ocean {
const accessService: Service = ddo.findServiceByType("Access")
const metadataService: Service = ddo.findServiceByType("Metadata")
const event: ContractEvent = EventListener.subscribe(accessService.serviceAgreementContract.contractName,
accessService.serviceAgreementContract.events[0].name, {
serviceAgreementId,
})
const price = metadataService.metadata.base.price
const balance = await consumer.getOceanBalance()
if (balance < price) {
throw new Error(`Not enough ocean tokens! Should have ${price} but has ${balance}`)
}
const event: ContractEvent = EventListener.subscribe(
accessService.serviceAgreementContract.contractName,
accessService.serviceAgreementContract.events[0].name, {
serviceAgreementId,
})
event.listenOnce((data) => {
new ServiceAgreement(serviceAgreementId)
.buyAsset(id,
Logger.log("Paying asset")
new ServiceAgreement(data.returnValues.serviceAgreementId)
.payAsset(id,
metadataService.metadata.base.price,
consumer,
)

View File

@ -195,8 +195,7 @@ export default class ServiceAgreement extends OceanBase {
super(serviceAgreementId)
}
// todo: sync with samer
public async buyAsset(assetId: string, price: number, consumer: Account): Promise<boolean> {
public async payAsset(assetId: string, price: number, consumer: Account): Promise<boolean> {
const {paymentConditions, token} = await Keeper.getInstance()
await token.approve(paymentConditions.getAddress(), price, consumer.getId())

View File

@ -122,7 +122,7 @@ describe("ServiceAgreement", () => {
})
})
describe("#buyAsset()", () => {
describe("#payAsset()", () => {
it("should lock the payment in that service agreement", async () => {
const did: string = `did:op:${assetId}`
@ -145,7 +145,7 @@ describe("ServiceAgreement", () => {
// get funds
await consumerAccount.requestTokens(metaDataService.metadata.base.price)
const paid: boolean = await serviceAgreement.buyAsset(assetId, metaDataService.metadata.base.price,
const paid: boolean = await serviceAgreement.payAsset(assetId, metaDataService.metadata.base.price,
consumerAccount)
assert(paid)
})
@ -173,7 +173,7 @@ describe("ServiceAgreement", () => {
// get funds
await consumerAccount.requestTokens(metaDataService.metadata.base.price)
const paid: boolean = await serviceAgreement.buyAsset(assetId, metaDataService.metadata.base.price,
const paid: boolean = await serviceAgreement.payAsset(assetId, metaDataService.metadata.base.price,
consumerAccount)
assert(paid)