-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
implement request_id on mostro messages #376
Changes from 5 commits
535ce42
7e9a7f6
fb2499e
1bf8729
76f65dc
169a763
1689ba9
18279af
2459b0e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -18,6 +18,7 @@ pub async fn add_invoice_action( | |||||||||||||||||||||||||||||||||
event: &UnwrappedGift, | ||||||||||||||||||||||||||||||||||
my_keys: &Keys, | ||||||||||||||||||||||||||||||||||
pool: &Pool<Sqlite>, | ||||||||||||||||||||||||||||||||||
request_id: u64, | ||||||||||||||||||||||||||||||||||
) -> Result<()> { | ||||||||||||||||||||||||||||||||||
let order_msg = msg.get_inner_message_kind(); | ||||||||||||||||||||||||||||||||||
let mut order = if let Some(order_id) = order_msg.id { | ||||||||||||||||||||||||||||||||||
|
@@ -54,7 +55,7 @@ pub async fn add_invoice_action( | |||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||
// Only the buyer can add an invoice | ||||||||||||||||||||||||||||||||||
if buyer_pubkey != event.sender { | ||||||||||||||||||||||||||||||||||
send_cant_do_msg(Some(order.id), None, &event.sender).await; | ||||||||||||||||||||||||||||||||||
send_cant_do_msg(request_id, Some(order.id), None, &event.sender).await; | ||||||||||||||||||||||||||||||||||
return Ok(()); | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
|
@@ -73,8 +74,14 @@ pub async fn add_invoice_action( | |||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||
Ok(_) => payment_request, | ||||||||||||||||||||||||||||||||||
Err(_) => { | ||||||||||||||||||||||||||||||||||
send_new_order_msg(Some(order.id), Action::IncorrectInvoiceAmount, None, &event.sender) | ||||||||||||||||||||||||||||||||||
.await; | ||||||||||||||||||||||||||||||||||
send_new_order_msg( | ||||||||||||||||||||||||||||||||||
msg.get_inner_message_kind().request_id, | ||||||||||||||||||||||||||||||||||
Some(order.id), | ||||||||||||||||||||||||||||||||||
Action::IncorrectInvoiceAmount, | ||||||||||||||||||||||||||||||||||
None, | ||||||||||||||||||||||||||||||||||
&event.sender, | ||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||
.await; | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use the function parameter There's an inconsistency in how the request_id is obtained. The function receives Apply this change for consistency: send_new_order_msg(
- msg.get_inner_message_kind().request_id,
+ request_id,
Some(order.id),
Action::IncorrectInvoiceAmount,
None,
&event.sender,
) 📝 Committable suggestion
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hi @arkanoider if you made this change please solve this conversation There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||||||||||||||||||||||||||||||||||
return Ok(()); | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
|
@@ -91,11 +98,19 @@ pub async fn add_invoice_action( | |||||||||||||||||||||||||||||||||
Status::SettledHoldInvoice => { | ||||||||||||||||||||||||||||||||||
order.payment_attempts = 0; | ||||||||||||||||||||||||||||||||||
order.clone().update(pool).await?; | ||||||||||||||||||||||||||||||||||
send_new_order_msg(Some(order.id), Action::InvoiceUpdated, None, &buyer_pubkey).await; | ||||||||||||||||||||||||||||||||||
send_new_order_msg( | ||||||||||||||||||||||||||||||||||
msg.get_inner_message_kind().request_id, | ||||||||||||||||||||||||||||||||||
Some(order.id), | ||||||||||||||||||||||||||||||||||
Action::InvoiceUpdated, | ||||||||||||||||||||||||||||||||||
None, | ||||||||||||||||||||||||||||||||||
&buyer_pubkey, | ||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||
.await; | ||||||||||||||||||||||||||||||||||
arkanoider marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||
return Ok(()); | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
_ => { | ||||||||||||||||||||||||||||||||||
send_new_order_msg( | ||||||||||||||||||||||||||||||||||
msg.get_inner_message_kind().request_id, | ||||||||||||||||||||||||||||||||||
Some(order.id), | ||||||||||||||||||||||||||||||||||
Action::NotAllowedByStatus, | ||||||||||||||||||||||||||||||||||
None, | ||||||||||||||||||||||||||||||||||
|
@@ -140,6 +155,7 @@ pub async fn add_invoice_action( | |||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
// We send a confirmation message to seller | ||||||||||||||||||||||||||||||||||
send_new_order_msg( | ||||||||||||||||||||||||||||||||||
msg.get_inner_message_kind().request_id, | ||||||||||||||||||||||||||||||||||
Some(order.id), | ||||||||||||||||||||||||||||||||||
Action::BuyerTookOrder, | ||||||||||||||||||||||||||||||||||
Some(Content::Order(order_data.clone())), | ||||||||||||||||||||||||||||||||||
|
@@ -148,14 +164,23 @@ pub async fn add_invoice_action( | |||||||||||||||||||||||||||||||||
.await; | ||||||||||||||||||||||||||||||||||
// We send a message to buyer saying seller paid | ||||||||||||||||||||||||||||||||||
send_new_order_msg( | ||||||||||||||||||||||||||||||||||
msg.get_inner_message_kind().request_id, | ||||||||||||||||||||||||||||||||||
Some(order.id), | ||||||||||||||||||||||||||||||||||
Action::HoldInvoicePaymentAccepted, | ||||||||||||||||||||||||||||||||||
Some(Content::Order(order_data)), | ||||||||||||||||||||||||||||||||||
&buyer_pubkey, | ||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||
.await; | ||||||||||||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||||||||||||
show_hold_invoice(my_keys, None, &buyer_pubkey, &seller_pubkey, order).await?; | ||||||||||||||||||||||||||||||||||
show_hold_invoice( | ||||||||||||||||||||||||||||||||||
my_keys, | ||||||||||||||||||||||||||||||||||
None, | ||||||||||||||||||||||||||||||||||
&buyer_pubkey, | ||||||||||||||||||||||||||||||||||
&seller_pubkey, | ||||||||||||||||||||||||||||||||||
order, | ||||||||||||||||||||||||||||||||||
msg.get_inner_message_kind().request_id, | ||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||
.await?; | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use the function parameter Final instance of the same inconsistency with request_id source. Apply this change: show_hold_invoice(
my_keys,
None,
&buyer_pubkey,
&seller_pubkey,
order,
- msg.get_inner_message_kind().request_id,
+ request_id,
) Consider implementing a dedicated type for request context that encapsulates both the message and request_id. This would make the relationship between them more explicit and help prevent such inconsistencies. For example: struct RequestContext {
message: Message,
request_id: u64,
} This aligns with the PR author's suggestion about improving the implementation's organization. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same that above There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @grunch, understood. I'll note that in this codebase, it's preferred to extract ✏️ Learnings added
|
||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Ok(()) | ||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Add validation for request_id extraction
Consider adding proper validation and error handling for the
request_id
extraction. This would help prevent potential issues with invalid or missing request IDs.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now
request_id
is anOption
we should be safe.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@arkanoider, understood. Since
request_id
is now anOption
, that should handle cases where it's missing or invalid. Thanks for the clarification.✏️ Learnings added