From bfca73f9d6817167ed18077f8458f34ce9edcedd Mon Sep 17 00:00:00 2001 From: benthecarman Date: Mon, 5 Feb 2024 14:28:58 +0000 Subject: [PATCH] Remove needed for passsword to get logs --- mutiny-core/src/logging.rs | 2 +- mutiny-wasm/src/indexed_db.rs | 26 ++++++++++++++++++++++++++ mutiny-wasm/src/lib.rs | 34 ++++++---------------------------- 3 files changed, 33 insertions(+), 29 deletions(-) diff --git a/mutiny-core/src/logging.rs b/mutiny-core/src/logging.rs index e00c0ab79..cf0b67c92 100644 --- a/mutiny-core/src/logging.rs +++ b/mutiny-core/src/logging.rs @@ -11,7 +11,7 @@ use hex_conservative::DisplayHex; use lightning::util::logger::{Level, Logger, Record}; use log::*; -pub(crate) const LOGGING_KEY: &str = "logs"; +pub const LOGGING_KEY: &str = "logs"; const MAX_LOG_ITEMS: usize = 10_000; diff --git a/mutiny-wasm/src/indexed_db.rs b/mutiny-wasm/src/indexed_db.rs index 149ce30f0..b94f6a23f 100644 --- a/mutiny-wasm/src/indexed_db.rs +++ b/mutiny-wasm/src/indexed_db.rs @@ -6,6 +6,7 @@ use gloo_utils::format::JsValueSerdeExt; use lightning::util::logger::Logger; use lightning::{log_debug, log_error, log_trace}; use log::error; +use mutiny_core::logging::LOGGING_KEY; use mutiny_core::storage::*; use mutiny_core::vss::*; use mutiny_core::*; @@ -140,6 +141,31 @@ impl IndexedDbStorage { Ok(res) } + pub(crate) async fn get_logs() -> Result>, MutinyError> { + let indexed_db = Self::build_indexed_db_database().await?; + let tx = indexed_db + .transaction(&[WALLET_OBJECT_STORE_NAME], TransactionMode::ReadOnly) + .map_err(|e| { + MutinyError::read_err( + anyhow!("Failed to create indexed db transaction: {e}").into(), + ) + })?; + + let store = tx.store(WALLET_OBJECT_STORE_NAME).map_err(|e| { + MutinyError::read_err(anyhow!("Failed to create indexed db store: {e}").into()) + })?; + + let key = JsValue::from(LOGGING_KEY); + let read = store + .get(&key) + .await + .map_err(|_| MutinyError::read_err(MutinyStorageError::IndexedDBError))?; + + let result: Option> = read.into_serde()?; + + Ok(result) + } + async fn save_to_indexed_db( indexed_db: &Arc>, items: &[(String, Value)], diff --git a/mutiny-wasm/src/lib.rs b/mutiny-wasm/src/lib.rs index a27655517..ab409022b 100644 --- a/mutiny-wasm/src/lib.rs +++ b/mutiny-wasm/src/lib.rs @@ -47,12 +47,9 @@ use mutiny_core::{ use mutiny_core::{logging::MutinyLogger, nostr::ProfileType}; use nostr::key::{FromSkStr, Secp256k1, SecretKey}; use nostr::{FromBech32, Keys, ToBech32}; +use std::collections::HashMap; use std::str::FromStr; use std::sync::Arc; -use std::{ - collections::HashMap, - sync::atomic::{AtomicBool, Ordering}, -}; use wasm_bindgen::prelude::*; static INITIALIZED: once_cell::sync::Lazy> = @@ -1356,26 +1353,9 @@ impl MutinyWallet { /// Exports the current state of the node manager to a json object. #[wasm_bindgen] - pub async fn get_logs( - password: Option, - ) -> Result> */, MutinyJsError> { - let logger = Arc::new(MutinyLogger::default()); - // TODO Password should not be required for logs - let cipher = password - .as_ref() - .filter(|p| !p.is_empty()) - .map(|p| encryption_key_from_pass(p)) - .transpose()?; - let storage = IndexedDbStorage::new(password, cipher, None, logger.clone()).await?; - let stop = Arc::new(AtomicBool::new(false)); - let logger = Arc::new(MutinyLogger::with_writer( - stop.clone(), - storage.clone(), - None, - )); - let res = JsValue::from_serde(&NodeManager::get_logs(storage, logger)?)?; - stop.swap(true, Ordering::Relaxed); - Ok(res) + pub async fn get_logs() -> Result> */, MutinyJsError> { + let logs = IndexedDbStorage::get_logs().await?; + Ok(JsValue::from_serde(&logs)?) } /// Get nostr wallet connect profiles @@ -2269,7 +2249,7 @@ mod tests { // sleep to make sure logs save sleep(6_000).await; - let logs = MutinyWallet::get_logs(None).await.expect("should get logs"); + let logs = MutinyWallet::get_logs().await.expect("should get logs"); let parsed_logs = js_to_option_vec_string(logs).expect("should parse logs"); assert!(parsed_logs.is_some()); assert!(!parsed_logs.clone().unwrap().is_empty()); @@ -2326,9 +2306,7 @@ mod tests { // sleep to make sure logs save sleep(6_000).await; - let logs = MutinyWallet::get_logs(password) - .await - .expect("should get logs"); + let logs = MutinyWallet::get_logs().await.expect("should get logs"); let parsed_logs = js_to_option_vec_string(logs).expect("should parse logs"); assert!(parsed_logs.is_some()); assert!(!parsed_logs.clone().unwrap().is_empty());