revert fiat amounts :(

This commit is contained in:
dni ⚡
2024-10-18 09:08:00 +02:00
parent f5e59cdf49
commit 5f32cfc053
4 changed files with 14 additions and 30 deletions
-1
View File
@@ -595,7 +595,6 @@ async def m026_update_payment_table(db):
await db.execute("ALTER TABLE apipayments ADD COLUMN extension TEXT")
await db.execute("ALTER TABLE apipayments ADD COLUMN created_at TIMESTAMP")
await db.execute("ALTER TABLE apipayments ADD COLUMN updated_at TIMESTAMP")
await db.execute("ALTER TABLE apipayments ADD COLUMN fiat_amounts TEXT")
async def m027_update_apipayments_data(db):
-11
View File
@@ -270,15 +270,6 @@ class PayInvoice(BaseModel):
extra: Optional[dict] = {}
class PaymentFiatAmounts(BaseModel):
wallet_fiat_currency: Optional[str] = None
wallet_fiat_amount: Optional[float] = None
wallet_fiat_rate: Optional[float] = None
fiat_currency: Optional[str] = None
fiat_amount: Optional[float] = None
fiat_rate: Optional[float] = None
class CreatePayment(BaseModel):
wallet_id: str
payment_hash: str
@@ -290,7 +281,6 @@ class CreatePayment(BaseModel):
expiry: Optional[datetime] = None
webhook: Optional[str] = None
fee: int = 0
fiat_amounts: PaymentFiatAmounts = PaymentFiatAmounts()
class Payment(BaseModel):
@@ -311,7 +301,6 @@ class Payment(BaseModel):
time: datetime = datetime.now(timezone.utc)
created_at: datetime = datetime.now(timezone.utc)
updated_at: datetime = datetime.now(timezone.utc)
fiat_amounts: PaymentFiatAmounts = PaymentFiatAmounts()
extra: dict = {}
@property
+13 -17
View File
@@ -73,7 +73,6 @@ from .models import (
BalanceDelta,
CreatePayment,
Payment,
PaymentFiatAmounts,
PaymentState,
User,
UserExtra,
@@ -85,15 +84,16 @@ async def calculate_fiat_amounts(
amount: float,
wallet: Wallet,
currency: Optional[str] = None,
) -> tuple[int, PaymentFiatAmounts]:
extra: Optional[dict] = None,
) -> tuple[int, dict]:
wallet_currency = wallet.currency or settings.lnbits_default_accounting_currency
fiat_amounts = PaymentFiatAmounts()
fiat_amounts: dict = extra or {}
if currency and currency != "sat":
amount_sat = await fiat_amount_as_satoshis(amount, currency)
if currency != wallet_currency:
fiat_amounts.fiat_currency = currency
fiat_amounts.fiat_amount = round(amount, ndigits=3)
fiat_amounts.fiat_rate = amount_sat / amount
fiat_amounts["fiat_currency"] = currency
fiat_amounts["fiat_amount"] = round(amount, ndigits=3)
fiat_amounts["fiat_rate"] = amount_sat / amount
else:
amount_sat = int(amount)
@@ -102,9 +102,9 @@ async def calculate_fiat_amounts(
fiat_amount = amount
else:
fiat_amount = await satoshis_amount_as_fiat(amount_sat, wallet_currency)
fiat_amounts.wallet_fiat_currency = wallet_currency
fiat_amounts.wallet_fiat_amount = round(fiat_amount, ndigits=3)
fiat_amounts.wallet_fiat_rate = amount_sat / fiat_amount
fiat_amounts["wallet_fiat_currency"] = wallet_currency
fiat_amounts["wallet_fiat_amount"] = round(fiat_amount, ndigits=3)
fiat_amounts["wallet_fiat_rate"] = amount_sat / fiat_amount
logger.debug(
f"Calculated fiat amounts {wallet.id=} {amount=} {currency=}: {fiat_amounts=}"
@@ -139,8 +139,8 @@ async def create_invoice(
# use the fake wallet if the invoice is for internal use only
funding_source = fake_wallet if internal else get_funding_source()
amount_sat, fiat_amounts = await calculate_fiat_amounts(
amount, user_wallet, currency
amount_sat, extra = await calculate_fiat_amounts(
amount, user_wallet, currency, extra
)
if settings.is_wallet_max_balance_exceeded(
@@ -179,7 +179,6 @@ async def create_invoice(
expiry=invoice.expiry_date,
memo=memo,
extra=extra,
fiat_amounts=fiat_amounts,
webhook=webhook,
)
@@ -222,9 +221,7 @@ async def _pay_internal_invoice(
internal_invoice.amount != abs(amount_msat)
or internal_invoice.bolt11 != create_payment_model.bolt11.lower()
):
raise PaymentError(
"Invalid invoice. Bolt11 or amount is not correct", status="failed"
)
raise PaymentError("Invalid invoice. Bolt11 changed.", status="failed")
fee_reserve_total_msat = fee_reserve_total(abs(amount_msat), internal=True)
create_payment_model.fee = abs(fee_reserve_total_msat)
@@ -383,7 +380,7 @@ async def pay_invoice(
if await is_internal_status_success(invoice.payment_hash, conn):
raise PaymentError("Internal invoice already paid.", status="failed")
_, fiat_amounts = await calculate_fiat_amounts(amount_msat / 1000, wallet)
_, extra = await calculate_fiat_amounts(amount_msat / 1000, wallet, extra=extra)
create_payment_model = CreatePayment(
wallet_id=wallet_id,
@@ -393,7 +390,6 @@ async def pay_invoice(
expiry=invoice.expiry_date,
memo=description or invoice.description or "",
extra=extra,
fiat_amounts=fiat_amounts,
)
payment = await _pay_invoice(wallet, create_payment_model, conn)
+1 -1
View File
@@ -109,7 +109,7 @@ async def test_invoice_changed(to_wallet: Wallet):
invoice.amount_msat = MilliSatoshi(12000)
payment_request = bolt11_encode(invoice)
with pytest.raises(PaymentError, match="Invalid invoice."):
with pytest.raises(PaymentError, match="Invalid invoice. Bolt11 changed."):
await pay_invoice(
wallet_id=to_wallet.id,
payment_request=payment_request,