From a5825f1aa91fc5c82f2d97eb11b6e2f880d06a4f Mon Sep 17 00:00:00 2001 From: Joel Klabo Date: Wed, 11 Jan 2023 14:44:51 -0800 Subject: [PATCH] Enabled Editing the Price for NIP-5 Domains --- lnbits/extensions/nostrnip5/crud.py | 20 ++++- lnbits/extensions/nostrnip5/models.py | 9 +++ .../nostrnip5/templates/nostrnip5/index.html | 73 +++++++++++++++++++ lnbits/extensions/nostrnip5/views_api.py | 11 ++- 4 files changed, 111 insertions(+), 2 deletions(-) diff --git a/lnbits/extensions/nostrnip5/crud.py b/lnbits/extensions/nostrnip5/crud.py index fe71b981f..b71670c7e 100644 --- a/lnbits/extensions/nostrnip5/crud.py +++ b/lnbits/extensions/nostrnip5/crud.py @@ -3,7 +3,7 @@ from typing import List, Optional, Union from lnbits.helpers import urlsafe_short_hash from . import db -from .models import Address, CreateAddressData, CreateDomainData, Domain +from .models import Address, CreateAddressData, CreateDomainData, EditDomainData, Domain async def get_domain(domain_id: str) -> Optional[Domain]: @@ -169,6 +169,24 @@ async def create_address_internal(domain_id: str, data: CreateAddressData) -> Ad assert address, "Newly created address couldn't be retrieved" return address +async def update_domain_internal(wallet_id: str, data: EditDomainData) -> Domain: + if data.currency != "Satoshis": + amount = data.amount * 100 + else: + amount = data.amount + print(data) + await db.execute( + """ + UPDATE nostrnip5.domains + SET amount = ?, currency = ? + WHERE id = ? + """, + (int(amount), data.currency, data.id), + ) + + domain = await get_domain(data.id) + assert domain, "Domain couldn't be updated" + return domain async def create_domain_internal(wallet_id: str, data: CreateDomainData) -> Domain: domain_id = urlsafe_short_hash() diff --git a/lnbits/extensions/nostrnip5/models.py b/lnbits/extensions/nostrnip5/models.py index e02f2909a..71e32c370 100644 --- a/lnbits/extensions/nostrnip5/models.py +++ b/lnbits/extensions/nostrnip5/models.py @@ -1,4 +1,5 @@ from enum import Enum +from locale import currency from sqlite3 import Row from typing import List, Optional @@ -23,6 +24,14 @@ class CreateDomainData(BaseModel): amount: float = Query(..., ge=0.01) domain: str +class EditDomainData(BaseModel): + id: str + currency: str + amount: float = Query(..., ge=0.01) + + @classmethod + def from_row(cls, row: Row) -> "Domain": + return cls(**dict(row)) class Domain(BaseModel): id: str diff --git a/lnbits/extensions/nostrnip5/templates/nostrnip5/index.html b/lnbits/extensions/nostrnip5/templates/nostrnip5/index.html index 6b805cccf..6d66ecd84 100644 --- a/lnbits/extensions/nostrnip5/templates/nostrnip5/index.html +++ b/lnbits/extensions/nostrnip5/templates/nostrnip5/index.html @@ -73,6 +73,14 @@ :color="($q.dark.isActive) ? 'grey-7' : 'grey-5'" @click="deleteDomain(props.row.id)" > + {{ col.value }} @@ -226,6 +234,40 @@ + + + + + + +
+ Update Amount + Cancel +
+
+
+
+