From e5cb59e24dd651f701a74be88621a365ef29e58d Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Fri, 25 Dec 2015 18:48:15 +0100 Subject: handle multi-coin payments correctly --- extension/background/emscriptif.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'extension/background/emscriptif.js') diff --git a/extension/background/emscriptif.js b/extension/background/emscriptif.js index d1e92df4b..5d8623b3e 100644 --- a/extension/background/emscriptif.js +++ b/extension/background/emscriptif.js @@ -242,6 +242,12 @@ class PackedArenaObject extends ArenaObject { emsc.free(d); return s; } + toJson() { + // Per default, the json encoding of + // packed arena objects is just the crockford encoding. + // Subclasses typically want to override this. + return this.toCrock(); + } loadCrock(s) { this.alloc(); // We need to get the javascript string @@ -286,6 +292,14 @@ class AmountNbo extends PackedArenaObject { size() { return 24; } + toJson() { + let a = new DefaultArena(); + let am = new Amount(null, a); + am.fromNbo(this); + let json = am.toJson(); + a.destroy(); + return json; + } } class EddsaPrivateKey extends PackedArenaObject { static create(a) { @@ -468,6 +482,19 @@ class SignatureStruct { let ba = new ByteArray(totalSize, buf, a); return new EccSignaturePurpose(this.purpose(), ba); } + toJson() { + let res = {}; + for (let f of this.fieldTypes()) { + let name = f[0]; + let member = this.members[name]; + if (!member) { + throw Error(format("Member {0} not set", name)); + } + res[name] = member.toJson(); + } + res["purpose"] = this.purpose(); + return res; + } set(name, value) { let typemap = {}; for (let f of this.fieldTypes()) { -- cgit v1.2.3