Przeglądaj źródła

Remove duplicate code

Cesar Rodas 3 tygodni temu
rodzic
commit
36b0dc6e2d

+ 0 - 11
crates/cdk/src/mint/melt/melt_saga/mod.rs

@@ -248,17 +248,6 @@ impl MeltSaga<Initial> {
 
         let mut proofs = tx.get_proofs(&input_ys).await?;
 
-        let original_state = proofs.state;
-
-        if matches!(original_state, State::Pending | State::Spent) {
-            tx.rollback().await?;
-            return Err(if original_state == State::Pending {
-                Error::TokenPending
-            } else {
-                Error::TokenAlreadySpent
-            });
-        }
-
         if let Err(err) = Mint::update_proofs_state(&mut tx, &mut proofs, State::Pending).await {
             tx.rollback().await?;
             return Err(err);

+ 8 - 4
crates/cdk/src/mint/proofs.rs

@@ -1,6 +1,6 @@
 use cdk_common::database::{Acquired, DynMintTransaction};
 use cdk_common::mint::ProofsWithState;
-use cdk_common::state::check_state_transition;
+use cdk_common::state::{self, check_state_transition};
 use cdk_common::{Error, State};
 
 use crate::Mint;
@@ -22,7 +22,11 @@ impl Mint {
         proofs: &mut Acquired<ProofsWithState>,
         new_state: State,
     ) -> Result<(), Error> {
-        check_state_transition(proofs.state, new_state).map_err(|_| Error::UnexpectedProofState)?;
+        check_state_transition(proofs.state, new_state).map_err(|err| match err {
+            state::Error::AlreadySpent => Error::TokenAlreadySpent,
+            state::Error::Pending => Error::TokenPending,
+            _ => Error::UnexpectedProofState,
+        })?;
 
         tx.update_proofs_state(proofs, new_state)
             .await
@@ -170,7 +174,7 @@ mod tests {
 
         let result = Mint::update_proofs_state(&mut tx, &mut acquired, State::Pending).await;
 
-        assert!(matches!(result, Err(Error::UnexpectedProofState)));
+        assert!(matches!(result, Err(Error::TokenPending)));
     }
 
     /// Test that update_proofs_state rejects invalid transition from Spent
@@ -215,7 +219,7 @@ mod tests {
 
         let result = Mint::update_proofs_state(&mut tx, &mut acquired, State::Pending).await;
 
-        assert!(matches!(result, Err(Error::UnexpectedProofState)));
+        assert!(matches!(result, Err(Error::TokenAlreadySpent)));
     }
 
     /// Test that ProofsWithState.state is updated after successful update

+ 0 - 12
crates/cdk/src/mint/swap/swap_saga/mod.rs

@@ -4,7 +4,6 @@ use std::sync::Arc;
 use cdk_common::database::DynMintDatabase;
 use cdk_common::mint::{Operation, Saga, SwapSagaState};
 use cdk_common::nuts::BlindedMessage;
-use cdk_common::state::check_state_transition;
 use cdk_common::{database, Amount, Error, Proofs, ProofsMethods, PublicKey, QuoteId, State};
 use tokio::sync::Mutex;
 use tracing::instrument;
@@ -193,17 +192,6 @@ impl<'a> SwapSaga<'a, Initial> {
             }
         };
 
-        let original_state = new_proofs.state;
-
-        if check_state_transition(new_proofs.state, State::Pending).is_err() {
-            tx.rollback().await?;
-            return Err(if original_state == State::Pending {
-                Error::TokenPending
-            } else {
-                Error::TokenAlreadySpent
-            });
-        }
-
         let ys = match input_proofs.ys() {
             Ok(ys) => ys,
             Err(err) => return Err(Error::NUT00(err)),