diff options
author | Florian Dold <florian.dold@gmail.com> | 2015-12-25 18:48:15 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2015-12-25 18:48:15 +0100 |
commit | e5cb59e24dd651f701a74be88621a365ef29e58d (patch) | |
tree | b48811e79ee05d1bd5bc789fb88c49f30732185f /extension/background/emscriptif.js | |
parent | c51f63567332825987e74d101ceea29735ab5b42 (diff) |
handle multi-coin payments correctly
Diffstat (limited to 'extension/background/emscriptif.js')
-rw-r--r-- | extension/background/emscriptif.js | 27 |
1 files changed, 27 insertions, 0 deletions
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()) { |