attempt to fix usernames
This commit is contained in:
parent
1b1d066d07
commit
4220ff285e
1 changed files with 22 additions and 10 deletions
32
views_api.py
32
views_api.py
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue