feat: allow minting after expiry

This commit is contained in:
thesimplekid
2024-10-30 21:43:27 +00:00
parent 654e803bc4
commit d9fb5f814a

View File

@@ -198,13 +198,41 @@ impl Mint {
.await
{
tracing::debug!(
"Quote {} paid by lookup id {}",
mint_quote.id,
request_lookup_id
"Received payment notification for mint quote {}",
mint_quote.id
);
self.localstore
.update_mint_quote_state(&mint_quote.id, MintQuoteState::Paid)
.await?;
if mint_quote.state != MintQuoteState::Issued
&& mint_quote.state != MintQuoteState::Paid
{
let unix_time = unix_time();
if mint_quote.expiry < unix_time {
tracing::warn!(
"Mint quote {} paid at {} expired at {}, leaving current state",
mint_quote.id,
mint_quote.expiry,
unix_time,
);
return Err(Error::ExpiredQuote(mint_quote.expiry, unix_time));
}
tracing::debug!(
"Marking quote {} paid by lookup id {}",
mint_quote.id,
request_lookup_id
);
self.localstore
.update_mint_quote_state(&mint_quote.id, MintQuoteState::Paid)
.await?;
} else {
tracing::debug!(
"{} Quote already {} continuing",
mint_quote.id,
mint_quote.state
);
}
}
Ok(())
}
@@ -215,16 +243,13 @@ impl Mint {
&self,
mint_request: nut04::MintBolt11Request,
) -> Result<nut04::MintBolt11Response, Error> {
// Check quote is known and not expired
match self.localstore.get_mint_quote(&mint_request.quote).await? {
Some(quote) => {
if quote.expiry < unix_time() {
return Err(Error::ExpiredQuote(quote.expiry, unix_time()));
}
}
None => {
return Err(Error::UnknownQuote);
}
if self
.localstore
.get_mint_quote(&mint_request.quote)
.await?
.is_none()
{
return Err(Error::UnknownQuote);
}
let state = self