more android helpers
This commit is contained in:
parent
106bc6ad9a
commit
d76bc2a03d
@ -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({
|
||||
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":
|
||||
{
|
||||
}
|
||||
case "getBalances": {
|
||||
const wallet = await wp.promise;
|
||||
result = await wallet.getBalances();
|
||||
}
|
||||
break;
|
||||
case "withdrawTestkudos":
|
||||
{
|
||||
}
|
||||
case "withdrawTestkudos": {
|
||||
const wallet = await wp.promise;
|
||||
result = await withdrawTestBalance(wallet);
|
||||
}
|
||||
break;
|
||||
case "downloadProposal":
|
||||
{
|
||||
}
|
||||
case "preparePay": {
|
||||
const wallet = await wp.promise;
|
||||
result = wallet.downloadProposal(msg.args.url);
|
||||
}
|
||||
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 "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;
|
||||
|
@ -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" });
|
||||
};
|
||||
|
@ -762,6 +762,7 @@ export class Wallet {
|
||||
status: "payment-possible",
|
||||
contractTerms: proposal.contractTerms,
|
||||
proposalId: proposal.id!,
|
||||
totalFees: checkResult.coinSelection!.totalFees,
|
||||
};
|
||||
}
|
||||
throw Error("not reached");
|
||||
|
@ -478,4 +478,5 @@ export interface PreparePayResult {
|
||||
contractTerms?: ContractTerms;
|
||||
error?: string;
|
||||
proposalId?: number;
|
||||
totalFees?: AmountJson;
|
||||
}
|
Loading…
Reference in New Issue
Block a user