From 719a207bce5cf8e680ecfc9f4b7f70c38ef10984 Mon Sep 17 00:00:00 2001 From: Wigy Date: Thu, 30 Jun 2022 12:44:44 +0200 Subject: [PATCH] Vault is unsaved (dirty) when created from a random seed --- sdk-wasm/src/vault/serializer.rs | 4 ++-- vault/src/vault.rs | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sdk-wasm/src/vault/serializer.rs b/sdk-wasm/src/vault/serializer.rs index dfe4f16..990775d 100644 --- a/sdk-wasm/src/vault/serializer.rs +++ b/sdk-wasm/src/vault/serializer.rs @@ -1,5 +1,5 @@ //! Cannot use typetags in wasm_bindgen, because it depends on module constructors. So as a workaround -//! until the https://github.com/mmastrac/rust-ctor/issues/14 issue is resolved. +//! until the issue is resolved. use super::*; @@ -31,6 +31,6 @@ pub struct VaultSerializer { impl From for Vault { fn from(mut ser: VaultSerializer) -> Self { let plugins = ser.plugins.drain(..).map(|p| p.into()).collect::>(); - Self::new(ser.encrypted_seed, plugins) + Self::new(ser.encrypted_seed, plugins, false) } } diff --git a/vault/src/vault.rs b/vault/src/vault.rs index d28c6b3..b670cae 100644 --- a/vault/src/vault.rs +++ b/vault/src/vault.rs @@ -25,8 +25,7 @@ struct VaultImpl { } impl VaultImpl { - fn new(encrypted_seed: String, plugins: Vec>) -> Self { - let is_dirty = false; + fn new(encrypted_seed: String, plugins: Vec>, is_dirty: bool) -> Self { Self { encrypted_seed, plugins, is_dirty } } } @@ -39,8 +38,8 @@ pub struct Vault { } impl Vault { - pub fn new(encrypted_seed: String, plugins: Vec>) -> Self { - let imp = VaultImpl::new(encrypted_seed, plugins); + pub fn new(encrypted_seed: String, plugins: Vec>, dirty: bool) -> Self { + let imp = VaultImpl::new(encrypted_seed, plugins, dirty); let inner = Arc::new(RwLock::new(imp)); Self { inner } } @@ -55,7 +54,8 @@ impl Vault { }; let seed = bip39.phrase(phrase)?.password(bip39_password); let encrypted_seed = Self::encrypt_seed(&seed, unlock_password.as_ref())?; - Ok(Self::new(encrypted_seed, Vec::new())) + let vault = Self::new(encrypted_seed, Vec::new(), true); + Ok(vault) } pub fn unlock(&self, unlock_password: &str) -> Result {