diff --git a/lnbits/extensions/gerty/views_api.py b/lnbits/extensions/gerty/views_api.py index 42329c94..4285216e 100644 --- a/lnbits/extensions/gerty/views_api.py +++ b/lnbits/extensions/gerty/views_api.py @@ -1,8 +1,10 @@ +import math from http import HTTPStatus import json import httpx import random import os +import time from fastapi import Query from fastapi.params import Depends from lnurl import decode as decode_lnurl @@ -26,7 +28,7 @@ from ...settings import LNBITS_PATH @gerty_ext.get("/api/v1/gerty", status_code=HTTPStatus.OK) async def api_gertys( - all_wallets: bool = Query(False), wallet: WalletTypeInfo = Depends(get_key_type) + all_wallets: bool = Query(False), wallet: WalletTypeInfo = Depends(get_key_type) ): wallet_ids = [wallet.wallet.id] if all_wallets: @@ -38,13 +40,12 @@ async def api_gertys( @gerty_ext.post("/api/v1/gerty", status_code=HTTPStatus.CREATED) @gerty_ext.put("/api/v1/gerty/{gerty_id}", status_code=HTTPStatus.OK) async def api_link_create_or_update( - data: Gerty, - wallet: WalletTypeInfo = Depends(get_key_type), - gerty_id: str = Query(None), + data: Gerty, + wallet: WalletTypeInfo = Depends(get_key_type), + gerty_id: str = Query(None), ): if gerty_id: gerty = await get_gerty(gerty_id) - logger.debug(gerty) if not gerty: raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="Gerty does not exist" @@ -63,9 +64,10 @@ async def api_link_create_or_update( return {**gerty.dict()} + @gerty_ext.delete("/api/v1/gerty/{gerty_id}") async def api_gerty_delete( - gerty_id: str, wallet: WalletTypeInfo = Depends(require_admin_key) + gerty_id: str, wallet: WalletTypeInfo = Depends(require_admin_key) ): gerty = await get_gerty(gerty_id) @@ -84,44 +86,50 @@ async def api_gerty_delete( ####################### with open(os.path.join(LNBITS_PATH, 'extensions/gerty/static/satoshi.json')) as fd: - satoshiQuotes = json.load(fd) + satoshiQuotes = json.load(fd) + @gerty_ext.get("/api/v1/gerty/satoshiquote", status_code=HTTPStatus.OK) async def api_gerty_satoshi(): return satoshiQuotes[random.randint(0, 100)] - + + @gerty_ext.get("/api/v1/gerty/{gerty_id}") async def api_gerty_json( - gerty_id: str + gerty_id: str, + p: int = None # page number ): gerty = await get_gerty(gerty_id) - logger.debug(gerty.wallet) + if not gerty: raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="Gerty does not exist." ) - gertyReturn = [] - # Get Wallet info - wallets = [] - if gerty.lnbits_wallets != "": - for lnbits_wallet in json.loads(gerty.lnbits_wallets): - wallet = await get_wallet_for_key(key=lnbits_wallet) - if wallet: - wallets.append({ - "name": wallet.name, - "balance": wallet.balance_msat, - "inkey": wallet.inkey, - }) + display_preferences = json.loads(gerty.display_preferences) - #Get Satoshi quotes + enabled_screen_count = 0 + + enabled_screens = [] + + for screen_slug in display_preferences: + is_screen_enabled = display_preferences[screen_slug] + if is_screen_enabled: + enabled_screen_count += 1 + enabled_screens.append(screen_slug) + + get_screen_text(p, enabled_screens) + + next_screen_number = 0 if ((p + 1) >= enabled_screen_count) else p + 1; + + # Get Satoshi quotes satoshi = [] # if gerty.sats_quote: # quote = await api_gerty_satoshi() # if quote: # satoshi.append(await api_gerty_satoshi()) - #Get Exchange Value + # Get Exchange Value exchange = [] # if gerty.exchange != "": # try: @@ -160,6 +168,51 @@ async def api_gerty_json( # if r: # ln.append(r.json()) - return {"name":gerty.name} + return { + "settings": { + "refreshTime": gerty.refresh_time, + "requestTimestamp": math.ceil(time.time()), + "nextScreenNumber": next_screen_number, + "name": gerty.name + }, + "screen": { + "slug": "x", + "group": "x", + "text": [ + { + "value": "Craig Steven Wright is a liar and\na fraud", + "size": 20, + "x": 20, + "y": 70 + } + ], + } + } + +def get_screen_text(screen_num: int, display_preferences: dict): + # first get the relevant slug from the display_preferences + screen_slug = list(display_preferences)[screen_num] + # logger.debug('screen_slug') + # logger.debug(screen_slug) + if screen_slug == "lnbits_wallets_balance": + + return screen_slug + +def get_lnbits_wallet_balances(gerty): + # Get Wallet info + wallets = [] + if gerty.lnbits_wallets != "": + logger.debug("wallets") + logger.debug(gerty.lnbits_wallets) + for lnbits_wallet in json.loads(gerty.lnbits_wallets): + wallet = await get_wallet_for_key(key=lnbits_wallet) + if wallet: + wallets.append({ + "name": wallet.name, + "balance": wallet.balance_msat, + "inkey": wallet.inkey, + }) + logger.debug(lnbits_wallet) + return wallets