diff --git a/lnbits/extensions/jukebox/views_api.py b/lnbits/extensions/jukebox/views_api.py
index 233873ef..ee2820db 100644
--- a/lnbits/extensions/jukebox/views_api.py
+++ b/lnbits/extensions/jukebox/views_api.py
@@ -1,4 +1,5 @@
from fastapi import Request
+
from http import HTTPStatus
from starlette.exceptions import HTTPException
from starlette.responses import HTMLResponse, JSONResponse # type: ignore
diff --git a/lnbits/extensions/satsdice/__init__.py b/lnbits/extensions/satsdice/__init__.py
index b991b135..b70b570e 100644
--- a/lnbits/extensions/satsdice/__init__.py
+++ b/lnbits/extensions/satsdice/__init__.py
@@ -1,14 +1,30 @@
-from quart import Blueprint
+import asyncio
+from fastapi import APIRouter, FastAPI
+from fastapi.staticfiles import StaticFiles
+from starlette.routing import Mount
from lnbits.db import Database
+from lnbits.helpers import template_renderer
+from lnbits.tasks import catch_everything_and_restart
-db = Database("ext_satsdice")
+db = Database("satsdice_ext")
+
+satsdice_ext: APIRouter = APIRouter(prefix="/satsdice", tags=["satsdice"])
-satsdice_ext: Blueprint = Blueprint(
- "satsdice", __name__, static_folder="static", template_folder="templates"
-)
+def satsdice_renderer():
+ return template_renderer(
+ [
+ "lnbits/extensions/satsdice/templates",
+ ]
+ )
from .views_api import * # noqa
from .views import * # noqa
from .lnurl import * # noqa
+from .tasks import wait_for_paid_invoices
+
+
+def satsdice_start():
+ loop = asyncio.get_event_loop()
+ loop.create_task(catch_everything_and_restart(wait_for_paid_invoices))
diff --git a/lnbits/extensions/satsdice/crud.py b/lnbits/extensions/satsdice/crud.py
index 78983142..c5434b39 100644
--- a/lnbits/extensions/satsdice/crud.py
+++ b/lnbits/extensions/satsdice/crud.py
@@ -1,23 +1,20 @@
from datetime import datetime
from typing import List, Optional, Union
from lnbits.helpers import urlsafe_short_hash
-
+from typing import List, Optional
from . import db
-from .models import satsdiceWithdraw, HashCheck, satsdiceLink, satsdicePayment
-
-##################SATSDICE PAY LINKS
+from .models import (
+ satsdiceWithdraw,
+ HashCheck,
+ satsdiceLink,
+ satsdicePayment,
+ CreateSatsDiceLink,
+)
+from lnbits.helpers import urlsafe_short_hash
async def create_satsdice_pay(
- *,
- wallet_id: str,
- title: str,
- base_url: str,
- min_bet: str,
- max_bet: str,
- multiplier: int = 0,
- chance: float = 0,
- haircut: int = 0,
+ data: CreateSatsDiceLink,
) -> satsdiceLink:
satsdice_id = urlsafe_short_hash()
await db.execute(
@@ -41,14 +38,14 @@ async def create_satsdice_pay(
""",
(
satsdice_id,
- wallet_id,
- title,
- base_url,
- min_bet,
- max_bet,
- multiplier,
- chance,
- haircut,
+ data.wallet_id,
+ data.title,
+ data.base_url,
+ data.min_bet,
+ data.max_bet,
+ data.multiplier,
+ data.chance,
+ data.haircut,
int(datetime.now().timestamp()),
),
)
@@ -111,9 +108,7 @@ async def delete_satsdice_pay(link_id: int) -> None:
##################SATSDICE PAYMENT LINKS
-async def create_satsdice_payment(
- *, satsdice_pay: str, value: int, payment_hash: str
-) -> satsdicePayment:
+async def create_satsdice_payment(data: CreateSatsDicePayment) -> satsdicePayment:
await db.execute(
"""
INSERT INTO satsdice.satsdice_payment (
@@ -126,9 +121,9 @@ async def create_satsdice_payment(
VALUES (?, ?, ?, ?, ?)
""",
(
- payment_hash,
- satsdice_pay,
- value,
+ data.payment_hash,
+ data.satsdice_pay,
+ data.value,
False,
False,
),
@@ -165,9 +160,7 @@ async def update_satsdice_payment(
##################SATSDICE WITHDRAW LINKS
-async def create_satsdice_withdraw(
- *, payment_hash: str, satsdice_pay: str, value: int, used: int
-) -> satsdiceWithdraw:
+async def create_satsdice_withdraw(data: CreateSatsDiceWithdraw) -> satsdiceWithdraw:
await db.execute(
"""
INSERT INTO satsdice.satsdice_withdraw (
@@ -182,13 +175,13 @@ async def create_satsdice_withdraw(
VALUES (?, ?, ?, ?, ?, ?, ?)
""",
(
- payment_hash,
- satsdice_pay,
- value,
+ data.payment_hash,
+ data.satsdice_pay,
+ data.value,
urlsafe_short_hash(),
urlsafe_short_hash(),
int(datetime.now().timestamp()),
- used,
+ data.used,
),
)
withdraw = await get_satsdice_withdraw(payment_hash, 0)
diff --git a/lnbits/extensions/satsdice/lnurl.py b/lnbits/extensions/satsdice/lnurl.py
index 1548de98..81c2a4a2 100644
--- a/lnbits/extensions/satsdice/lnurl.py
+++ b/lnbits/extensions/satsdice/lnurl.py
@@ -3,7 +3,6 @@ import hashlib
import math
from http import HTTPStatus
from datetime import datetime
-from quart import jsonify, url_for, request
from lnbits.core.services import pay_invoice, create_invoice
from lnbits.utils.exchange_rates import get_fiat_rate_satoshis
diff --git a/lnbits/extensions/satsdice/models.py b/lnbits/extensions/satsdice/models.py
index 5fe732dd..d77f8dc4 100644
--- a/lnbits/extensions/satsdice/models.py
+++ b/lnbits/extensions/satsdice/models.py
@@ -1,11 +1,14 @@
import json
-from quart import url_for
from lnurl import Lnurl, LnurlWithdrawResponse, encode as lnurl_encode # type: ignore
from urllib.parse import urlparse, urlunparse, parse_qs, urlencode, ParseResult
from lnurl.types import LnurlPayMetadata # type: ignore
from sqlite3 import Row
from typing import NamedTuple, Optional, Dict
import shortuuid # type: ignore
+from fastapi.param_functions import Query
+from pydantic.main import BaseModel
+from pydantic import BaseModel
+from typing import Optional
class satsdiceLink(NamedTuple):
@@ -120,3 +123,36 @@ class HashCheck(NamedTuple):
@classmethod
def from_row(cls, row: Row) -> "Hash":
return cls(**dict(row))
+
+
+class CreateSatsDiceLink(BaseModel):
+ wallet_id: str = Query(None)
+ title: str = Query(None)
+ base_url: str = Query(None)
+ min_bet: str = Query(None)
+ max_bet: str = Query(None)
+ multiplier: int = Query(0)
+ chance: float = Query(0)
+ haircut: int = Query(0)
+
+
+class CreateSatsDicePayment(BaseModel):
+ satsdice_pay: str = Query(None)
+ value: int = Query(0)
+ payment_hash: str = Query(None)
+
+
+class CreateSatsDiceWithdraw(BaseModel):
+ payment_hash: str = Query(None)
+ satsdice_pay: str = Query(None)
+ value: int = Query(0)
+ used: int = Query(0)
+
+
+class CreateSatsDiceWithdraws(BaseModel):
+ title: str = Query(None)
+ min_satsdiceable: int = Query(0)
+ max_satsdiceable: int = Query(0)
+ uses: int = Query(0)
+ wait_time: str = Query(None)
+ is_unique: bool = Query(False)
diff --git a/lnbits/extensions/satsdice/templates/satsdice/index.html b/lnbits/extensions/satsdice/templates/satsdice/index.html
index 3e8573b8..d92d43be 100644
--- a/lnbits/extensions/satsdice/templates/satsdice/index.html
+++ b/lnbits/extensions/satsdice/templates/satsdice/index.html
@@ -262,8 +262,7 @@
{% endblock %} {% block scripts %} {{ window_vars(user) }}
-
-
+