aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/android/index.ts73
-rw-r--r--src/headless/helpers.ts6
-rw-r--r--src/wallet.ts1
-rw-r--r--src/walletTypes.ts1
4 files changed, 54 insertions, 27 deletions
diff --git a/src/android/index.ts b/src/android/index.ts
index b8958b417..6d072a839 100644
--- a/src/android/index.ts
+++ b/src/android/index.ts
@@ -18,8 +18,9 @@
* Imports.
*/
import { Wallet } from "../wallet";
-import { getDefaultNodeWallet, withdrawTestBalance } from "../headless/helpers";
+import { getDefaultNodeWallet, withdrawTestBalance, DefaultNodeWalletArgs } from "../headless/helpers";
import { openPromise } from "../promiseUtils";
+import fs = require("fs");
export function installAndroidWalletListener() {
// @ts-ignore
@@ -31,7 +32,8 @@ export function installAndroidWalletListener() {
throw new Error(errMsg);
}
let maybeWallet: Wallet | undefined;
- const wp = openPromise<Wallet>();
+ let wp = openPromise<Wallet>();
+ let walletArgs: DefaultNodeWalletArgs | undefined;
const onMessage = async (msgStr: any) => {
if (typeof msgStr !== "string") {
console.error("expected string as message");
@@ -48,35 +50,54 @@ export function installAndroidWalletListener() {
const id = msg.id;
let result;
switch (operation) {
- case "init":
- {
- maybeWallet = await getDefaultNodeWallet({
- notifyHandler: async () => {
- sendMessage(JSON.stringify({ type: "notification" }));
- },
- });
- wp.resolve(maybeWallet);
- result = true;
- }
+ case "init": {
+ walletArgs = {
+ notifyHandler: async () => {
+ sendMessage(JSON.stringify({ type: "notification" }));
+ },
+ persistentStoragePath: msg.args.persistentStoragePath,
+ };
+ maybeWallet = await getDefaultNodeWallet(walletArgs);
+ wp.resolve(maybeWallet);
+ result = true;
break;
- case "getBalances":
- {
- const wallet = await wp.promise;
- result = await wallet.getBalances();
- }
+ }
+ case "getBalances": {
+ const wallet = await wp.promise;
+ result = await wallet.getBalances();
break;
- case "withdrawTestkudos":
- {
- const wallet = await wp.promise;
- result = await withdrawTestBalance(wallet);
- }
+ }
+ case "withdrawTestkudos": {
+ const wallet = await wp.promise;
+ result = await withdrawTestBalance(wallet);
+ break;
+ }
+ case "preparePay": {
+ const wallet = await wp.promise;
+ result = await wallet.preparePay(msg.args.url);
+ break;
+ }
+ case "confirmPay": {
+ const wallet = await wp.promise;
+ result = await wallet.confirmPay(msg.args.proposalId, undefined);
break;
- case "downloadProposal":
- {
- const wallet = await wp.promise;
- result = wallet.downloadProposal(msg.args.url);
+ }
+ case "reset": {
+ const wallet = await wp.promise;
+ wallet.stop()
+ wp = openPromise<Wallet>();
+ if (walletArgs && walletArgs.persistentStoragePath) {
+ try {
+ fs.unlinkSync(walletArgs.persistentStoragePath)
+ } catch (e) {
+ console.error("Error while deleting the wallet db:", e);
+ }
+ // Prevent further storage!
+ walletArgs.persistentStoragePath = undefined;
}
+ maybeWallet = undefined;
break;
+ }
default:
console.error(`operation "${operation}" not understood`);
return;
diff --git a/src/headless/helpers.ts b/src/headless/helpers.ts
index 5636b3921..7c4fa8777 100644
--- a/src/headless/helpers.ts
+++ b/src/headless/helpers.ts
@@ -106,7 +106,7 @@ export class NodeHttpLib implements HttpRequestLibrary {
}
}
-interface DefaultNodeWalletArgs {
+export interface DefaultNodeWalletArgs {
/**
* Location of the wallet database.
*
@@ -155,6 +155,10 @@ export async function getDefaultNodeWallet(
}
myBackend.afterCommitCallback = async () => {
+ // Allow caller to stop persisting the wallet.
+ if (args.persistentStoragePath === undefined) {
+ return;
+ }
const dbContent = myBackend.exportDump();
fs.writeFileSync(storagePath, JSON.stringify(dbContent, undefined, 2), { encoding: "utf-8" });
};
diff --git a/src/wallet.ts b/src/wallet.ts
index eda7bfeaf..50f3ee7e0 100644
--- a/src/wallet.ts
+++ b/src/wallet.ts
@@ -762,6 +762,7 @@ export class Wallet {
status: "payment-possible",
contractTerms: proposal.contractTerms,
proposalId: proposal.id!,
+ totalFees: checkResult.coinSelection!.totalFees,
};
}
throw Error("not reached");
diff --git a/src/walletTypes.ts b/src/walletTypes.ts
index e6564b91b..a74f81136 100644
--- a/src/walletTypes.ts
+++ b/src/walletTypes.ts
@@ -478,4 +478,5 @@ export interface PreparePayResult {
contractTerms?: ContractTerms;
error?: string;
proposalId?: number;
+ totalFees?: AmountJson;
} \ No newline at end of file