From e28dea97d89e682d3c55b255109d2c6e6bf7ab87 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Fri, 9 Dec 2022 14:53:51 +0200 Subject: [PATCH] fix: update the in-memory settings object when the DB is updated --- lnbits/core/services.py | 18 ++++++++++-------- lnbits/core/views/admin_api.py | 3 ++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lnbits/core/services.py b/lnbits/core/services.py index 585a8d88..b37f60e6 100644 --- a/lnbits/core/services.py +++ b/lnbits/core/services.py @@ -408,9 +408,7 @@ async def update_wallet_balance(wallet_id: str, amount: int): async def check_admin_settings(): - if settings.lnbits_admin_ui: - sets = await get_super_settings() if not sets: # create new settings if table is empty @@ -422,12 +420,7 @@ async def check_admin_settings(): sets = await get_super_settings() if sets: - for key, value in sets.dict().items(): - if not key in readonly_variables: - try: - setattr(settings, key, value) - except: - logger.error(f"error overriding setting: {key}, value: {value}") + update_cached_settings(sets.dict()) # printing settings for debugging logger.debug(f"Admin settings:") @@ -449,6 +442,15 @@ async def check_admin_settings(): settings.send_admin_user_to_saas() +def update_cached_settings(sets_dict: dict): + for key, value in sets_dict.items(): + if not key in readonly_variables: + try: + setattr(settings, key, value) + except: + logger.error(f"error overriding setting: {key}, value: {value}") + + class WebsocketConnectionManager: def __init__(self): self.active_connections: List[WebSocket] = [] diff --git a/lnbits/core/views/admin_api.py b/lnbits/core/views/admin_api.py index f2489fa0..0ca8b8e5 100644 --- a/lnbits/core/views/admin_api.py +++ b/lnbits/core/views/admin_api.py @@ -7,7 +7,7 @@ from starlette.exceptions import HTTPException from lnbits.core.crud import get_wallet from lnbits.core.models import User -from lnbits.core.services import update_wallet_balance +from lnbits.core.services import update_cached_settings, update_wallet_balance from lnbits.decorators import check_admin from lnbits.server import server_restart from lnbits.settings import AdminSettings, EditableSetings @@ -61,6 +61,7 @@ async def api_topup_balance( ) async def api_update_settings(data: EditableSetings): await update_admin_settings(data) + update_cached_settings(dict(data)) return {"status": "Success"}