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