aboutsummaryrefslogtreecommitdiff
path: root/extension/background/emscriptif.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2015-12-25 18:48:15 +0100
committerFlorian Dold <florian.dold@gmail.com>2015-12-25 18:48:15 +0100
commite5cb59e24dd651f701a74be88621a365ef29e58d (patch)
treeb48811e79ee05d1bd5bc789fb88c49f30732185f /extension/background/emscriptif.js
parentc51f63567332825987e74d101ceea29735ab5b42 (diff)
handle multi-coin payments correctly
Diffstat (limited to 'extension/background/emscriptif.js')
-rw-r--r--extension/background/emscriptif.js27
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()) {