attempt to fix usernames

This commit is contained in:
padreug 2025-11-10 19:33:39 +01:00
parent 1b1d066d07
commit 4220ff285e

View file

@ -532,29 +532,41 @@ async def _get_username_from_user_id(user_id: str) -> str:
logger.info(f"[USERNAME] Case 1 result: '{result}'")
return result
# Case 2: Dashless 32-char UUID - lookup via Castle user settings
# Case 2: Dashless 32-char UUID - lookup via Castle user settings, fallback to LNbits
elif len(user_id) == 32 and '-' not in user_id:
logger.info(f"[USERNAME] Case 2: Dashless UUID format - looking up in Castle user settings")
try:
# Get all Castle users (which have full user_ids)
user_settings = await get_all_user_wallet_settings()
# Convert dashless to dashed format for comparison
# Convert dashless to dashed format
user_id_with_dashes = f"{user_id[0:8]}-{user_id[8:12]}-{user_id[12:16]}-{user_id[16:20]}-{user_id[20:32]}"
logger.info(f"[USERNAME] Converted to dashed format: {user_id_with_dashes}")
# Find matching user
# Try Castle settings first
user_settings = await get_all_user_wallet_settings()
for setting in user_settings:
if setting.id == user_id_with_dashes:
logger.info(f"[USERNAME] Found matching user in Castle settings")
# Get username from LNbits
user = await get_user(setting.id)
result = user.username if user and user.username else f"User-{user_id[:8]}"
logger.info(f"[USERNAME] Case 2 result (found): '{result}'")
logger.info(f"[USERNAME] Case 2 result (from Castle): '{result}'")
return result
# No matching user found
logger.info(f"[USERNAME] No matching user found in Castle settings")
# Not in Castle settings - try LNbits database directly
logger.info(f"[USERNAME] Not in Castle settings, querying LNbits database directly")
from lnbits.db import Database
db = Database("database")
async with db.connect() as conn:
row = await conn.fetchone(
"SELECT id, username FROM accounts WHERE id = :user_id LIMIT 1",
{"user_id": user_id_with_dashes}
)
logger.info(f"[USERNAME] Database query result: {row}")
if row and row["username"]:
result = row["username"]
logger.info(f"[USERNAME] Case 2 result (from LNbits DB): '{result}'")
return result
# User doesn't exist anywhere
logger.info(f"[USERNAME] User not found in LNbits database either")
result = f"User-{user_id[:8]}"
logger.info(f"[USERNAME] Case 2 result (not found): '{result}'")
return result