chore: update rexie nostr

This commit is contained in:
thesimplekid
2024-07-27 08:52:55 -04:00
parent c36eb3caa2
commit 5b4aafeb9d
3 changed files with 74 additions and 52 deletions

View File

@@ -25,7 +25,7 @@ tracing.workspace = true
tracing-subscriber.workspace = true
rand.workspace = true
home.workspace = true
nostr-sdk = { version = "0.32.0", default-features = false, features = [
nostr-sdk = { version = "0.33.0", default-features = false, features = [
"nip04",
"nip44"
]}

View File

@@ -15,7 +15,7 @@ default = ["wallet"]
wallet = ["cdk/wallet"]
[dependencies]
rexie = "0.5.0"
rexie = "0.6.0"
cdk = { workspace = true, default-features = false }
async-trait.workspace = true
tokio.workspace = true

View File

@@ -46,6 +46,9 @@ pub enum Error {
/// NUT00 Error
#[error(transparent)]
NUT00(cdk::nuts::nut00::Error),
#[error("Not found")]
/// Not Found
NotFound,
}
impl From<Error> for cdk::cdk_database::Error {
fn from(e: Error) -> Self {
@@ -149,7 +152,7 @@ impl WalletDatabase for WalletRexieDatabase {
let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?;
mints_store.delete(&mint_url).await.map_err(Error::from)?;
mints_store.delete(mint_url).await.map_err(Error::from)?;
transaction.done().await.map_err(Error::from)?;
@@ -166,10 +169,11 @@ impl WalletDatabase for WalletRexieDatabase {
let mints_store = transaction.store(MINTS).map_err(Error::from)?;
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<MintInfo> =
serde_wasm_bindgen::from_value(mint_info).map_err(Error::from)?;
let mint_info = mints_store
.get(mint_url)
.await
.map_err(Error::from)?
.and_then(|m| serde_wasm_bindgen::from_value(m).ok());
Ok(mint_info)
}
@@ -184,7 +188,7 @@ impl WalletDatabase for WalletRexieDatabase {
let mints_store = transaction.store(MINTS).map_err(Error::from)?;
let mints = mints_store
.get_all(None, None, None, None)
.scan(None, None, None, None)
.await
.map_err(Error::from)?;
@@ -265,13 +269,11 @@ impl WalletDatabase for WalletRexieDatabase {
let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?;
let mint_keysets = mint_keysets_store
.get(&mint_url)
let mut mint_keysets = mint_keysets_store
.get(mint_url.clone())
.await
.map_err(Error::from)?;
let mut mint_keysets: Option<HashSet<Id>> =
serde_wasm_bindgen::from_value(mint_keysets).map_err(Error::from)?;
.map_err(Error::from)?
.and_then(|m| serde_wasm_bindgen::from_value(m).ok());
let new_keyset_ids: Vec<Id> = keysets.iter().map(|k| k.id).collect();
@@ -315,10 +317,11 @@ impl WalletDatabase for WalletRexieDatabase {
let mints_store = transaction.store(MINT_KEYSETS).map_err(Error::from)?;
let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?;
let mint_keysets = mints_store.get(&mint_url).await.map_err(Error::from)?;
let mint_keysets: Option<HashSet<Id>> =
serde_wasm_bindgen::from_value(mint_keysets).map_err(Error::from)?;
let mint_keysets: Option<HashSet<Id>> = mints_store
.get(mint_url)
.await
.map_err(Error::from)?
.and_then(|m| serde_wasm_bindgen::from_value(m).ok());
let keysets_store = transaction.store(KEYSETS).map_err(Error::from)?;
@@ -329,13 +332,17 @@ impl WalletDatabase for WalletRexieDatabase {
for mint_keyset in mint_keysets {
let id = serde_wasm_bindgen::to_value(&mint_keyset).map_err(Error::from)?;
let keyset = keysets_store.get(&id).await.map_err(Error::from)?;
let keyset = serde_wasm_bindgen::from_value(keyset).map_err(Error::from)?;
let keyset = keysets_store
.get(id)
.await
.map_err(Error::from)?
.and_then(|k| serde_wasm_bindgen::from_value(k).ok());
keysets.push(keyset);
}
let keysets = keysets.iter().flatten().cloned().collect();
Some(keysets)
}
None => None,
@@ -356,9 +363,13 @@ impl WalletDatabase for WalletRexieDatabase {
let keyset_id = serde_wasm_bindgen::to_value(keyset_id).map_err(Error::from)?;
let keyset = keysets_store.get(&keyset_id).await.map_err(Error::from)?;
let keyset = keysets_store
.get(keyset_id)
.await
.map_err(Error::from)?
.and_then(|k| serde_wasm_bindgen::from_value(k).ok());
Ok(serde_wasm_bindgen::from_value(keyset).map_err(Error::from)?)
Ok(keyset)
}
async fn add_mint_quote(&self, quote: MintQuote) -> Result<(), Self::Err> {
@@ -393,10 +404,11 @@ impl WalletDatabase for WalletRexieDatabase {
let quotes_store = transaction.store(MINT_QUOTES).map_err(Error::from)?;
let quote_id = serde_wasm_bindgen::to_value(&quote_id).map_err(Error::from)?;
let quote = quotes_store.get(&quote_id).await.map_err(Error::from)?;
let quote: Option<MintQuote> =
serde_wasm_bindgen::from_value(quote).map_err(Error::from)?;
let quote = quotes_store
.get(quote_id)
.await
.map_err(Error::from)?
.and_then(|q| serde_wasm_bindgen::from_value(q).ok());
Ok(quote)
}
@@ -411,7 +423,7 @@ impl WalletDatabase for WalletRexieDatabase {
let quotes_store = transaction.store(MINT_QUOTES).map_err(Error::from)?;
let quotes = quotes_store
.get_all(None, None, None, None)
.scan(None, None, None, None)
.await
.map_err(Error::from)?;
@@ -432,7 +444,7 @@ impl WalletDatabase for WalletRexieDatabase {
let quote_id = serde_wasm_bindgen::to_value(&quote_id).map_err(Error::from)?;
quotes_store.delete(&quote_id).await.map_err(Error::from)?;
quotes_store.delete(quote_id).await.map_err(Error::from)?;
transaction.done().await.map_err(Error::from)?;
@@ -471,10 +483,11 @@ impl WalletDatabase for WalletRexieDatabase {
let quotes_store = transaction.store(MELT_QUOTES).map_err(Error::from)?;
let quote_id = serde_wasm_bindgen::to_value(&quote_id).map_err(Error::from)?;
let keysets = quotes_store.get(&quote_id).await.map_err(Error::from)?;
let quote: Option<MeltQuote> =
serde_wasm_bindgen::from_value(keysets).map_err(Error::from)?;
let quote = quotes_store
.get(quote_id)
.await
.map_err(Error::from)?
.and_then(|q| serde_wasm_bindgen::from_value(q).ok());
Ok(quote)
}
@@ -490,7 +503,7 @@ impl WalletDatabase for WalletRexieDatabase {
let quote_id = serde_wasm_bindgen::to_value(&quote_id).map_err(Error::from)?;
quotes_store.delete(&quote_id).await.map_err(Error::from)?;
quotes_store.delete(quote_id).await.map_err(Error::from)?;
transaction.done().await.map_err(Error::from)?;
@@ -529,9 +542,11 @@ impl WalletDatabase for WalletRexieDatabase {
let keys_store = transaction.store(MINT_KEYS).map_err(Error::from)?;
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<Keys> = serde_wasm_bindgen::from_value(keys).map_err(Error::from)?;
let keys = keys_store
.get(keyset_id)
.await
.map_err(Error::from)?
.and_then(|k| serde_wasm_bindgen::from_value(k).ok());
Ok(keys)
}
@@ -546,7 +561,7 @@ impl WalletDatabase for WalletRexieDatabase {
let keys_store = transaction.store(MINT_KEYS).map_err(Error::from)?;
let keyset_id = serde_wasm_bindgen::to_value(id).map_err(Error::from)?;
keys_store.delete(&keyset_id).await.map_err(Error::from)?;
keys_store.delete(keyset_id).await.map_err(Error::from)?;
Ok(())
}
@@ -592,7 +607,7 @@ impl WalletDatabase for WalletRexieDatabase {
let proofs_store = transaction.store(PROOFS).map_err(Error::from)?;
let proofs = proofs_store
.get_all(None, None, None, None)
.scan(None, None, None, None)
.await
.map_err(Error::from)?;
@@ -634,7 +649,7 @@ impl WalletDatabase for WalletRexieDatabase {
for proof in proofs {
let y = serde_wasm_bindgen::to_value(&proof.y()?).map_err(Error::from)?;
proofs_store.delete(&y).await.map_err(Error::from)?;
proofs_store.delete(y).await.map_err(Error::from)?;
}
transaction.done().await.map_err(Error::from)?;
@@ -653,8 +668,12 @@ impl WalletDatabase for WalletRexieDatabase {
let y = serde_wasm_bindgen::to_value(&y).map_err(Error::from)?;
let proof = proofs_store.get(&y).await.map_err(Error::from)?;
let mut proof: ProofInfo = serde_wasm_bindgen::from_value(proof).map_err(Error::from)?;
let mut proof: ProofInfo = proofs_store
.get(y.clone())
.await
.map_err(Error::from)?
.and_then(|p| serde_wasm_bindgen::from_value(p).ok())
.ok_or(Error::NotFound)?;
proof.state = state;
@@ -681,9 +700,11 @@ impl WalletDatabase for WalletRexieDatabase {
let keyset_id = serde_wasm_bindgen::to_value(keyset_id).map_err(Error::from)?;
let current_count = counter_store.get(&keyset_id).await.map_err(Error::from)?;
let current_count: Option<u32> =
serde_wasm_bindgen::from_value(current_count).map_err(Error::from)?;
let current_count: Option<u32> = counter_store
.get(keyset_id.clone())
.await
.map_err(Error::from)?
.and_then(|c| serde_wasm_bindgen::from_value(c).ok());
let new_count = current_count.unwrap_or_default() + count;
@@ -710,9 +731,11 @@ impl WalletDatabase for WalletRexieDatabase {
let keyset_id = serde_wasm_bindgen::to_value(keyset_id).map_err(Error::from)?;
let current_count = counter_store.get(&keyset_id).await.map_err(Error::from)?;
let current_count: Option<u32> =
serde_wasm_bindgen::from_value(current_count).map_err(Error::from)?;
let current_count = counter_store
.get(keyset_id)
.await
.map_err(Error::from)?
.and_then(|c| serde_wasm_bindgen::from_value(c).ok());
Ok(current_count)
}
@@ -759,11 +782,10 @@ impl WalletDatabase for WalletRexieDatabase {
let verifying_key = serde_wasm_bindgen::to_value(verifying_key).map_err(Error::from)?;
let last_checked = nostr_last_check_store
.get(&verifying_key)
.get(verifying_key)
.await
.map_err(Error::from)?;
let last_checked: Option<u32> =
serde_wasm_bindgen::from_value(last_checked).map_err(Error::from)?;
.map_err(Error::from)?
.and_then(|l| serde_wasm_bindgen::from_value(l).ok());
Ok(last_checked)
}