Selaa lähdekoodia

feat(bindings): melted getters

thesimplekid 11 kuukautta sitten
vanhempi
säilyke
e766f3fbb1

+ 13 - 0
bindings/cdk-js/src/nuts/nut00/token.rs

@@ -1,8 +1,11 @@
 use std::ops::Deref;
+use std::str::FromStr;
 
 use cdk::nuts::Token;
 use wasm_bindgen::prelude::*;
 
+use crate::error::{into_err, Result};
+
 #[wasm_bindgen(js_name = Token)]
 pub struct JsToken {
     inner: Token,
@@ -20,3 +23,13 @@ impl From<Token> for JsToken {
         JsToken { inner }
     }
 }
+
+#[wasm_bindgen(js_class = Token)]
+impl JsToken {
+    #[wasm_bindgen(constructor)]
+    pub fn new(token: String) -> Result<JsToken> {
+        Ok(Self {
+            inner: Token::from_str(&token).map_err(into_err)?,
+        })
+    }
+}

+ 5 - 0
bindings/cdk-js/src/nuts/nut00/witness.rs

@@ -44,4 +44,9 @@ impl JsWitness {
     pub fn signatures(&self) -> Option<Vec<String>> {
         self.inner.signatures()
     }
+
+    #[wasm_bindgen(getter)]
+    pub fn preimage(&self) -> Option<String> {
+        self.inner.preimage()
+    }
 }

+ 20 - 0
bindings/cdk-js/src/types/melted.rs

@@ -3,6 +3,8 @@ use std::ops::Deref;
 use cdk::types::Melted;
 use wasm_bindgen::prelude::*;
 
+use crate::error::Result;
+
 #[wasm_bindgen(js_name = Melted)]
 pub struct JsMelted {
     inner: Melted,
@@ -20,3 +22,21 @@ impl From<Melted> for JsMelted {
         JsMelted { inner }
     }
 }
+
+#[wasm_bindgen(js_class = Melted)]
+impl JsMelted {
+    #[wasm_bindgen(getter)]
+    pub fn paid(&self) -> bool {
+        self.inner.paid
+    }
+
+    #[wasm_bindgen(getter)]
+    pub fn preimage(&self) -> Option<String> {
+        self.inner.preimage.clone()
+    }
+
+    #[wasm_bindgen(getter)]
+    pub fn change(&self) -> Result<JsValue> {
+        Ok(serde_wasm_bindgen::to_value(&self.inner.change)?)
+    }
+}

+ 7 - 0
crates/cdk/src/nuts/nut00.rs

@@ -159,6 +159,13 @@ impl Witness {
             Self::HTLCWitness(witness) => witness.signatures.clone(),
         }
     }
+
+    pub fn preimage(&self) -> Option<String> {
+        match self {
+            Self::P2PKWitness(_witness) => None,
+            Self::HTLCWitness(witness) => Some(witness.preimage.clone()),
+        }
+    }
 }
 
 /// Proofs