aboutsummaryrefslogtreecommitdiff
path: root/extension/lib/wallet/wallet.ts
diff options
context:
space:
mode:
Diffstat (limited to 'extension/lib/wallet/wallet.ts')
-rw-r--r--extension/lib/wallet/wallet.ts30
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