diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-02-23 14:07:53 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-02-23 14:07:59 +0100 |
commit | 5591077fe9241def5fa33fc90a24681c8b7b0976 (patch) | |
tree | e4020c487d20fd7bfd7b2256ee8f2d88861dcc6a /extension/lib/wallet/wallet.ts | |
parent | 718f81bcd858bd50373066845727b0cf520ccd06 (diff) |
repurchase detection
Diffstat (limited to 'extension/lib/wallet/wallet.ts')
-rw-r--r-- | extension/lib/wallet/wallet.ts | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/extension/lib/wallet/wallet.ts b/extension/lib/wallet/wallet.ts index 67e35bd11..92fb92a4a 100644 --- a/extension/lib/wallet/wallet.ts +++ b/extension/lib/wallet/wallet.ts @@ -32,6 +32,7 @@ import {Reserve} from "./types"; import {CryptoApi} from "./cryptoApi"; import {Coin} from "./types"; import {PayCoinInfo} from "./types"; +import {CheckRepurchaseResult} from "./types"; "use strict"; @@ -279,8 +280,9 @@ interface CoinPaySig { interface Transaction { contractHash: string; - contract: any; + contract: Contract; payReq: any; + merchantSig: string; } @@ -512,6 +514,7 @@ export class Wallet { contractHash: offer.H_contract, contract: offer.contract, payReq: payReq, + merchantSig: offer.merchant_sig, }; console.log("pay request"); @@ -926,4 +929,29 @@ export class Wallet { .iter("history", {indexName: "timestamp"}) .reduce(collect, []) } + + checkRepurchase(contract: Contract): Promise<CheckRepurchaseResult> { + if (!contract.repurchase_correlation_id) { + console.log("no repurchase: no correlation id"); + return Promise.resolve({isRepurchase: false}); + } + return Query(this.db) + .getIndexed("transactions", + "repurchase", + [contract.merchant_pub, contract.repurchase_correlation_id]) + .then((result: Transaction) => { + console.log("db result", result); + let isRepurchase; + if (result) { + console.assert(result.contract.repurchase_correlation_id == contract.repurchase_correlation_id); + return { + isRepurchase: true, + existingContractHash: result.contractHash, + existingFulfillmentUrl: result.contract.fulfillment_url, + }; + } else { + return {isRepurchase: false}; + } + }); + } }
\ No newline at end of file |