fix: wallet panic

This commit is contained in:
trisua 2025-08-08 14:52:53 -04:00
parent e5e6d5cddb
commit a08552338b
4 changed files with 46 additions and 13 deletions

View file

@ -180,11 +180,19 @@
(text "{% if product.method != \"ManualMail\" -%} {{ product.method.AutoMail }} {%- endif %}")))
(button (str (text "general:action.save")))))
(a
("class" "button secondary")
("href" "/product/{{ product.id }}")
(icon (text "arrow-left"))
(str (text "general:action.back"))))
(div
("class" "flex gap_2")
(a
("class" "button secondary")
("href" "/product/{{ product.id }}")
(icon (text "arrow-left"))
(str (text "general:action.back")))
(button
("class" "lowered red")
("onclick" "delete_product()")
(icon (text "trash"))
(str (text "general:action.delete")))))
(script
(text "async function update_title_from_form(e) {
@ -339,6 +347,27 @@
});
}
async function delete_product() {
if (
!(await trigger(\"atto::confirm\", [
\"Are you sure you would like to do this?\",
]))
) {
return;
}
fetch(\"/api/v1/products/{{ product.id }}\", {
method: \"DELETE\",
})
.then((res) => res.json())
.then((res) => {
trigger(\"atto::toast\", [
res.ok ? \"success\" : \"error\",
res.message,
]);
});
};
globalThis.mirror_use_automail = () => {
const use_automail = document.getElementById(\"use_automail\").checked;

View file

@ -174,7 +174,7 @@ pub async fn update_price_request(
None => return Json(Error::NotAllowed.into()),
};
if req.price < 25 {
if req.price < 25 && req.price != 0 {
return Json(
Error::MiscError(
"Price is too low, please use a price of 25 coins or more".to_string(),

View file

@ -58,7 +58,7 @@ impl DataManager {
Ok(res.unwrap())
}
const MAXIMUM_FREE_PRODUCTS: usize = 5;
const MAXIMUM_FREE_PRODUCTS: usize = 10;
/// Create a new product in the database.
///

View file

@ -54,13 +54,17 @@ impl DataManager {
match transfer.method {
CoinTransferMethod::Transfer => None,
CoinTransferMethod::Purchase(id) => {
Some(if let Some(product) = seen_products.get(&id) {
product.to_owned()
if let Some(product) = seen_products.get(&id) {
Some(product.to_owned())
} else {
let product = self.get_product_by_id(id).await?;
seen_products.insert(product.id, product.clone());
product
})
match self.get_product_by_id(id).await {
Ok(product) => {
seen_products.insert(product.id, product.clone());
Some(product)
}
Err(_) => None,
}
}
}
},
transfer.is_pending,