diff --git a/crates/cdk-rexie/src/wallet.rs b/crates/cdk-rexie/src/wallet.rs index d7308443..37263316 100644 --- a/crates/cdk-rexie/src/wallet.rs +++ b/crates/cdk-rexie/src/wallet.rs @@ -31,12 +31,11 @@ pub enum Error { CDKDatabase(#[from] cdk::cdk_database::Error), /// Rexie Error #[error(transparent)] - Redb(#[from] rexie::Error), + Rexie(#[from] rexie::Error), /// Serde Wasm Error #[error(transparent)] SerdeBindgen(#[from] serde_wasm_bindgen::Error), } - impl From for cdk::cdk_database::Error { fn from(e: Error) -> Self { Self::Database(Box::new(e)) @@ -53,8 +52,8 @@ pub struct RexieWalletDatabase { } // These are okay because we never actually send across threads in the browser -//unsafe impl Send for RexieWalletDatabase {} -//unsafe impl Sync for RexieWalletDatabase {} +unsafe impl Send for RexieWalletDatabase {} +unsafe impl Sync for RexieWalletDatabase {} impl RexieWalletDatabase { pub async fn new() -> Result { @@ -125,51 +124,65 @@ impl RexieWalletDatabase { #[cfg_attr(target_arch = "wasm32", async_trait(?Send))] #[cfg_attr(not(target_arch = "wasm32"), async_trait)] impl WalletDatabase for RexieWalletDatabase { - type Err = Error; + type Err = cdk::cdk_database::Error; + async fn add_mint( &self, mint_url: UncheckedUrl, mint_info: Option, - ) -> Result<(), Error> { + ) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MINTS], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[MINTS], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let mints_store = transaction.store(MINTS)?; + let mints_store = transaction.store(MINTS).map_err(Error::from)?; - let mint_url = serde_wasm_bindgen::to_value(&mint_url)?; - let mint_info = serde_wasm_bindgen::to_value(&mint_info)?; + let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?; + let mint_info = serde_wasm_bindgen::to_value(&mint_info).map_err(Error::from)?; - mints_store.add(&mint_info, Some(&mint_url)).await?; + mints_store + .add(&mint_info, Some(&mint_url)) + .await + .map_err(Error::from)?; - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; Ok(()) } - async fn get_mint(&self, mint_url: UncheckedUrl) -> Result, Error> { + async fn get_mint(&self, mint_url: UncheckedUrl) -> Result, Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MINTS], TransactionMode::ReadOnly)?; + let transaction = rexie + .transaction(&[MINTS], TransactionMode::ReadOnly) + .map_err(Error::from)?; - let mints_store = transaction.store(MINTS)?; + let mints_store = transaction.store(MINTS).map_err(Error::from)?; - let mint_url = serde_wasm_bindgen::to_value(&mint_url)?; - let mint_info = mints_store.get(&mint_url).await?; + let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?; + let mint_info = mints_store.get(&mint_url).await.map_err(Error::from)?; - let mint_info: Option = serde_wasm_bindgen::from_value(mint_info)?; + let mint_info: Option = + serde_wasm_bindgen::from_value(mint_info).map_err(Error::from)?; Ok(mint_info) } - async fn get_mints(&self) -> Result>, Error> { + async fn get_mints(&self) -> Result>, Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MINTS], TransactionMode::ReadOnly)?; + let transaction = rexie + .transaction(&[MINTS], TransactionMode::ReadOnly) + .map_err(Error::from)?; - let mints_store = transaction.store(MINTS)?; + let mints_store = transaction.store(MINTS).map_err(Error::from)?; - let mints = mints_store.get_all(None, None, None, None).await?; + let mints = mints_store + .get_all(None, None, None, None) + .await + .map_err(Error::from)?; let mints: HashMap> = mints .into_iter() @@ -188,19 +201,24 @@ impl WalletDatabase for RexieWalletDatabase { &self, mint_url: UncheckedUrl, keysets: Vec, - ) -> Result<(), Error> { + ) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MINT_KEYSETS], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[MINT_KEYSETS], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let keysets_store = transaction.store(MINT_KEYSETS)?; + let keysets_store = transaction.store(MINT_KEYSETS).map_err(Error::from)?; - let mint_url = serde_wasm_bindgen::to_value(&mint_url)?; - let keysets = serde_wasm_bindgen::to_value(&keysets)?; + let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?; + let keysets = serde_wasm_bindgen::to_value(&keysets).map_err(Error::from)?; - keysets_store.add(&keysets, Some(&mint_url)).await?; + keysets_store + .add(&keysets, Some(&mint_url)) + .await + .map_err(Error::from)?; - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; Ok(()) } @@ -208,158 +226,190 @@ impl WalletDatabase for RexieWalletDatabase { async fn get_mint_keysets( &self, mint_url: UncheckedUrl, - ) -> Result>, Error> { + ) -> Result>, Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MINT_KEYSETS], TransactionMode::ReadOnly)?; + let transaction = rexie + .transaction(&[MINT_KEYSETS], TransactionMode::ReadOnly) + .map_err(Error::from)?; - let mints_store = transaction.store(MINT_KEYSETS)?; + let mints_store = transaction.store(MINT_KEYSETS).map_err(Error::from)?; - let mint_url = serde_wasm_bindgen::to_value(&mint_url)?; - let keysets = mints_store.get(&mint_url).await?; + let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?; + let keysets = mints_store.get(&mint_url).await.map_err(Error::from)?; - let keysets: Option> = serde_wasm_bindgen::from_value(keysets)?; + let keysets: Option> = + serde_wasm_bindgen::from_value(keysets).map_err(Error::from)?; Ok(keysets) } - async fn add_mint_quote(&self, quote: MintQuote) -> Result<(), Error> { + async fn add_mint_quote(&self, quote: MintQuote) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MINT_QUOTES], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[MINT_QUOTES], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let quotes_store = transaction.store(MINT_QUOTES)?; + let quotes_store = transaction.store(MINT_QUOTES).map_err(Error::from)?; - let quote_id = serde_wasm_bindgen::to_value("e.id)?; - let quote = serde_wasm_bindgen::to_value("e)?; + let quote_id = serde_wasm_bindgen::to_value("e.id).map_err(Error::from)?; + let quote = serde_wasm_bindgen::to_value("e).map_err(Error::from)?; - quotes_store.add("e, Some("e_id)).await?; + quotes_store + .add("e, Some("e_id)) + .await + .map_err(Error::from)?; - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; Ok(()) } - async fn get_mint_quote(&self, quote_id: &str) -> Result, Error> { + async fn get_mint_quote(&self, quote_id: &str) -> Result, Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MINT_QUOTES], TransactionMode::ReadOnly)?; + let transaction = rexie + .transaction(&[MINT_QUOTES], TransactionMode::ReadOnly) + .map_err(Error::from)?; - let quotes_store = transaction.store(MINT_QUOTES)?; + let quotes_store = transaction.store(MINT_QUOTES).map_err(Error::from)?; - let quote_id = serde_wasm_bindgen::to_value("e_id)?; - let keysets = quotes_store.get("e_id).await?; + let quote_id = serde_wasm_bindgen::to_value("e_id).map_err(Error::from)?; + let keysets = quotes_store.get("e_id).await.map_err(Error::from)?; - let quote: Option = serde_wasm_bindgen::from_value(keysets)?; + let quote: Option = + serde_wasm_bindgen::from_value(keysets).map_err(Error::from)?; Ok(quote) } - async fn remove_mint_quote(&self, quote_id: &str) -> Result<(), Error> { + async fn remove_mint_quote(&self, quote_id: &str) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MINT_QUOTES], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[MINT_QUOTES], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let quotes_store = transaction.store(MINT_QUOTES)?; + let quotes_store = transaction.store(MINT_QUOTES).map_err(Error::from)?; - let quote_id = serde_wasm_bindgen::to_value("e_id)?; + let quote_id = serde_wasm_bindgen::to_value("e_id).map_err(Error::from)?; - quotes_store.delete("e_id).await?; + quotes_store.delete("e_id).await.map_err(Error::from)?; - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; Ok(()) } - async fn add_melt_quote(&self, quote: MeltQuote) -> Result<(), Error> { + async fn add_melt_quote(&self, quote: MeltQuote) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MELT_QUOTES], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[MELT_QUOTES], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let quotes_store = transaction.store(MELT_QUOTES)?; + let quotes_store = transaction.store(MELT_QUOTES).map_err(Error::from)?; - let quote_id = serde_wasm_bindgen::to_value("e.id)?; - let quote = serde_wasm_bindgen::to_value("e)?; + let quote_id = serde_wasm_bindgen::to_value("e.id).map_err(Error::from)?; + let quote = serde_wasm_bindgen::to_value("e).map_err(Error::from)?; - quotes_store.add("e, Some("e_id)).await?; + quotes_store + .add("e, Some("e_id)) + .await + .map_err(Error::from)?; - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; Ok(()) } - async fn get_melt_quote(&self, quote_id: &str) -> Result, Error> { + async fn get_melt_quote(&self, quote_id: &str) -> Result, Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MELT_QUOTES], TransactionMode::ReadOnly)?; + let transaction = rexie + .transaction(&[MELT_QUOTES], TransactionMode::ReadOnly) + .map_err(Error::from)?; - let quotes_store = transaction.store(MELT_QUOTES)?; + let quotes_store = transaction.store(MELT_QUOTES).map_err(Error::from)?; - let quote_id = serde_wasm_bindgen::to_value("e_id)?; - let keysets = quotes_store.get("e_id).await?; + let quote_id = serde_wasm_bindgen::to_value("e_id).map_err(Error::from)?; + let keysets = quotes_store.get("e_id).await.map_err(Error::from)?; - let quote: Option = serde_wasm_bindgen::from_value(keysets)?; + let quote: Option = + serde_wasm_bindgen::from_value(keysets).map_err(Error::from)?; Ok(quote) } - async fn remove_melt_quote(&self, quote_id: &str) -> Result<(), Error> { + async fn remove_melt_quote(&self, quote_id: &str) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MELT_QUOTES], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[MELT_QUOTES], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let quotes_store = transaction.store(MELT_QUOTES)?; + let quotes_store = transaction.store(MELT_QUOTES).map_err(Error::from)?; - let quote_id = serde_wasm_bindgen::to_value("e_id)?; + let quote_id = serde_wasm_bindgen::to_value("e_id).map_err(Error::from)?; - quotes_store.delete("e_id).await?; + quotes_store.delete("e_id).await.map_err(Error::from)?; - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; Ok(()) } - async fn add_keys(&self, keys: Keys) -> Result<(), Error> { + async fn add_keys(&self, keys: Keys) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MINT_KEYS], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[MINT_KEYS], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let keys_store = transaction.store(MINT_KEYS)?; + let keys_store = transaction.store(MINT_KEYS).map_err(Error::from)?; - let keyset_id = serde_wasm_bindgen::to_value(&Id::from(&keys))?; - let keys = serde_wasm_bindgen::to_value(&keys)?; + let keyset_id = serde_wasm_bindgen::to_value(&Id::from(&keys)).map_err(Error::from)?; + let keys = serde_wasm_bindgen::to_value(&keys).map_err(Error::from)?; - keys_store.add(&keys, Some(&keyset_id)).await?; + keys_store + .add(&keys, Some(&keyset_id)) + .await + .map_err(Error::from)?; - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; Ok(()) } - async fn get_keys(&self, id: &Id) -> Result, Error> { + async fn get_keys(&self, id: &Id) -> Result, Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MINT_KEYS], TransactionMode::ReadOnly)?; + let transaction = rexie + .transaction(&[MINT_KEYS], TransactionMode::ReadOnly) + .map_err(Error::from)?; - let keys_store = transaction.store(MINT_KEYS)?; + let keys_store = transaction.store(MINT_KEYS).map_err(Error::from)?; - let keyset_id = serde_wasm_bindgen::to_value(id)?; - let keys = keys_store.get(&keyset_id).await?; + let keyset_id = serde_wasm_bindgen::to_value(id).map_err(Error::from)?; + let keys = keys_store.get(&keyset_id).await.map_err(Error::from)?; - let keys: Option = serde_wasm_bindgen::from_value(keys)?; + let keys: Option = serde_wasm_bindgen::from_value(keys).map_err(Error::from)?; Ok(keys) } - async fn remove_keys(&self, id: &Id) -> Result<(), Error> { + async fn remove_keys(&self, id: &Id) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[MINT_KEYS], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[MINT_KEYS], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let keys_store = transaction.store(MINT_KEYS)?; + let keys_store = transaction.store(MINT_KEYS).map_err(Error::from)?; - let keyset_id = serde_wasm_bindgen::to_value(id)?; - keys_store.delete(&keyset_id).await?; + let keyset_id = serde_wasm_bindgen::to_value(id).map_err(Error::from)?; + keys_store.delete(&keyset_id).await.map_err(Error::from)?; Ok(()) } @@ -367,58 +417,73 @@ impl WalletDatabase for RexieWalletDatabase { async fn add_proofs(&self, mint_url: UncheckedUrl, proofs: Proofs) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[PROOFS], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[PROOFS], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let proofs_store = transaction.store(PROOFS)?; + let proofs_store = transaction.store(PROOFS).map_err(Error::from)?; - let mint_url = serde_wasm_bindgen::to_value(&mint_url)?; + let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?; - let current_proofs = proofs_store.get(&mint_url).await?; + let current_proofs = proofs_store.get(&mint_url).await.map_err(Error::from)?; - let current_proofs: Proofs = serde_wasm_bindgen::from_value(current_proofs)?; + let current_proofs: Proofs = + serde_wasm_bindgen::from_value(current_proofs).map_err(Error::from)?; let all_proofs: Proofs = current_proofs .into_iter() .chain(proofs.into_iter()) .collect(); - let all_proofs = serde_wasm_bindgen::to_value(&all_proofs)?; + let all_proofs = serde_wasm_bindgen::to_value(&all_proofs).map_err(Error::from)?; - proofs_store.add(&all_proofs, Some(&mint_url)).await?; + proofs_store + .add(&all_proofs, Some(&mint_url)) + .await + .map_err(Error::from)?; - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; Ok(()) } - async fn get_proofs(&self, mint_url: UncheckedUrl) -> Result, Error> { + async fn get_proofs(&self, mint_url: UncheckedUrl) -> Result, Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[PROOFS], TransactionMode::ReadOnly)?; + let transaction = rexie + .transaction(&[PROOFS], TransactionMode::ReadOnly) + .map_err(Error::from)?; - let proofs_store = transaction.store(PROOFS)?; + let proofs_store = transaction.store(PROOFS).map_err(Error::from)?; - let mint_url = serde_wasm_bindgen::to_value(&mint_url)?; - let proofs = proofs_store.get(&mint_url).await?; + let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?; + let proofs = proofs_store.get(&mint_url).await.map_err(Error::from)?; - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; - let proofs: Option = serde_wasm_bindgen::from_value(proofs)?; + let proofs: Option = serde_wasm_bindgen::from_value(proofs).map_err(Error::from)?; Ok(proofs) } - async fn remove_proofs(&self, mint_url: UncheckedUrl, proofs: &Proofs) -> Result<(), Error> { + async fn remove_proofs( + &self, + mint_url: UncheckedUrl, + proofs: &Proofs, + ) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[PROOFS], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[PROOFS], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let proofs_store = transaction.store(PROOFS)?; + let proofs_store = transaction.store(PROOFS).map_err(Error::from)?; - let mint_url = serde_wasm_bindgen::to_value(&mint_url)?; - let current_proofs = proofs_store.get(&mint_url).await?; + let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?; + let current_proofs = proofs_store.get(&mint_url).await.map_err(Error::from)?; - let current_proofs: Option = serde_wasm_bindgen::from_value(current_proofs)?; + let current_proofs: Option = + serde_wasm_bindgen::from_value(current_proofs).map_err(Error::from)?; if let Some(current_proofs) = current_proofs { let proofs: Proofs = current_proofs @@ -426,12 +491,15 @@ impl WalletDatabase for RexieWalletDatabase { .filter(|p| !proofs.contains(p)) .collect(); - let proofs = serde_wasm_bindgen::to_value(&proofs)?; + let proofs = serde_wasm_bindgen::to_value(&proofs).map_err(Error::from)?; - proofs_store.add(&proofs, Some(&mint_url)).await?; + proofs_store + .add(&proofs, Some(&mint_url)) + .await + .map_err(Error::from)?; } - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; Ok(()) } @@ -443,43 +511,54 @@ impl WalletDatabase for RexieWalletDatabase { ) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[PENDING_PROOFS], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[PENDING_PROOFS], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let proofs_store = transaction.store(PENDING_PROOFS)?; + let proofs_store = transaction.store(PENDING_PROOFS).map_err(Error::from)?; - let mint_url = serde_wasm_bindgen::to_value(&mint_url)?; + let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?; - let current_proofs = proofs_store.get(&mint_url).await?; + let current_proofs = proofs_store.get(&mint_url).await.map_err(Error::from)?; - let current_proofs: Proofs = serde_wasm_bindgen::from_value(current_proofs)?; + let current_proofs: Proofs = + serde_wasm_bindgen::from_value(current_proofs).map_err(Error::from)?; let all_proofs: Proofs = current_proofs .into_iter() .chain(proofs.into_iter()) .collect(); - let all_proofs = serde_wasm_bindgen::to_value(&all_proofs)?; + let all_proofs = serde_wasm_bindgen::to_value(&all_proofs).map_err(Error::from)?; - proofs_store.add(&all_proofs, Some(&mint_url)).await?; + proofs_store + .add(&all_proofs, Some(&mint_url)) + .await + .map_err(Error::from)?; - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; Ok(()) } - async fn get_pending_proofs(&self, mint_url: UncheckedUrl) -> Result, Error> { + async fn get_pending_proofs( + &self, + mint_url: UncheckedUrl, + ) -> Result, Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[PENDING_PROOFS], TransactionMode::ReadOnly)?; + let transaction = rexie + .transaction(&[PENDING_PROOFS], TransactionMode::ReadOnly) + .map_err(Error::from)?; - let proofs_store = transaction.store(PENDING_PROOFS)?; + let proofs_store = transaction.store(PENDING_PROOFS).map_err(Error::from)?; - let mint_url = serde_wasm_bindgen::to_value(&mint_url)?; - let proofs = proofs_store.get(&mint_url).await?; + let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?; + let proofs = proofs_store.get(&mint_url).await.map_err(Error::from)?; - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; - let proofs: Option = serde_wasm_bindgen::from_value(proofs)?; + let proofs: Option = serde_wasm_bindgen::from_value(proofs).map_err(Error::from)?; Ok(proofs) } @@ -488,17 +567,20 @@ impl WalletDatabase for RexieWalletDatabase { &self, mint_url: UncheckedUrl, proofs: &Proofs, - ) -> Result<(), Error> { + ) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[PENDING_PROOFS], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[PENDING_PROOFS], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let proofs_store = transaction.store(PENDING_PROOFS)?; + let proofs_store = transaction.store(PENDING_PROOFS).map_err(Error::from)?; - let mint_url = serde_wasm_bindgen::to_value(&mint_url)?; - let current_proofs = proofs_store.get(&mint_url).await?; + let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?; + let current_proofs = proofs_store.get(&mint_url).await.map_err(Error::from)?; - let current_proofs: Option = serde_wasm_bindgen::from_value(current_proofs)?; + let current_proofs: Option = + serde_wasm_bindgen::from_value(current_proofs).map_err(Error::from)?; if let Some(current_proofs) = current_proofs { let proofs: Proofs = current_proofs @@ -506,50 +588,62 @@ impl WalletDatabase for RexieWalletDatabase { .filter(|p| !proofs.contains(p)) .collect(); - let proofs = serde_wasm_bindgen::to_value(&proofs)?; + let proofs = serde_wasm_bindgen::to_value(&proofs).map_err(Error::from)?; - proofs_store.add(&proofs, Some(&mint_url)).await?; + proofs_store + .add(&proofs, Some(&mint_url)) + .await + .map_err(Error::from)?; } - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; Ok(()) } - async fn increment_keyset_counter(&self, keyset_id: &Id, count: u64) -> Result<(), Error> { + async fn increment_keyset_counter(&self, keyset_id: &Id, count: u64) -> Result<(), Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[KEYSET_COUNTER], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[KEYSET_COUNTER], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let counter_store = transaction.store(KEYSET_COUNTER)?; + let counter_store = transaction.store(KEYSET_COUNTER).map_err(Error::from)?; - let keyset_id = serde_wasm_bindgen::to_value(keyset_id)?; + let keyset_id = serde_wasm_bindgen::to_value(keyset_id).map_err(Error::from)?; - let current_count = counter_store.get(&keyset_id).await?; - let current_count: Option = serde_wasm_bindgen::from_value(current_count)?; + let current_count = counter_store.get(&keyset_id).await.map_err(Error::from)?; + let current_count: Option = + serde_wasm_bindgen::from_value(current_count).map_err(Error::from)?; let new_count = current_count.unwrap_or_default() + count; - let new_count = serde_wasm_bindgen::to_value(&new_count)?; + let new_count = serde_wasm_bindgen::to_value(&new_count).map_err(Error::from)?; - counter_store.add(&new_count, Some(&keyset_id)).await?; + counter_store + .add(&new_count, Some(&keyset_id)) + .await + .map_err(Error::from)?; - transaction.done().await?; + transaction.done().await.map_err(Error::from)?; Ok(()) } - async fn get_keyset_counter(&self, keyset_id: &Id) -> Result, Error> { + async fn get_keyset_counter(&self, keyset_id: &Id) -> Result, Self::Err> { let rexie = self.db.lock().await; - let transaction = rexie.transaction(&[KEYSET_COUNTER], TransactionMode::ReadWrite)?; + let transaction = rexie + .transaction(&[KEYSET_COUNTER], TransactionMode::ReadWrite) + .map_err(Error::from)?; - let counter_store = transaction.store(KEYSET_COUNTER)?; + let counter_store = transaction.store(KEYSET_COUNTER).map_err(Error::from)?; - let keyset_id = serde_wasm_bindgen::to_value(keyset_id)?; + let keyset_id = serde_wasm_bindgen::to_value(keyset_id).map_err(Error::from)?; - let current_count = counter_store.get(&keyset_id).await?; - let current_count: Option = serde_wasm_bindgen::from_value(current_count)?; + let current_count = counter_store.get(&keyset_id).await.map_err(Error::from)?; + let current_count: Option = + serde_wasm_bindgen::from_value(current_count).map_err(Error::from)?; Ok(current_count) }