import streamlit as st
import pyrebase
import os
import base64
import json
import requests
from dotenv import load_dotenv
load_dotenv()
# ==== Firebase Config & Initialization ====
def initialize_firebase():
"""Khởi tạo và trả về các đối tượng Firebase. Sử dụng singleton pattern."""
if "firebase_app" not in st.session_state:
firebase_config = {
"apiKey": os.getenv("FIREBASE_API_KEY"),
"authDomain": os.getenv("FIREBASE_AUTH_DOMAIN"),
"projectId": os.getenv("FIREBASE_PROJECT_ID"),
"storageBucket": os.getenv("FIREBASE_STORAGE_BUCKET"),
"messagingSenderId": os.getenv("FIREBASE_MESSAGING_SENDER_ID"),
"appId": os.getenv("FIREBASE_APP_ID"),
"databaseURL": os.getenv("FIREBASE_DATABASE_URL", ""),
}
st.session_state.firebase_app = pyrebase.initialize_app(firebase_config)
auth_fb = st.session_state.firebase_app.auth()
return auth_fb
# ==== CSS Dùng chung ====
def load_css():
"""Tải CSS theme Cyberpunk Neon."""
st.markdown("""
""", unsafe_allow_html=True)
# ==== Hàm Render Avatar ====
def render_avatar(uid, container, get_avatar_blob_func):
avatar_bytes = get_avatar_blob_func(uid)
if avatar_bytes:
img_base64 = base64.b64encode(avatar_bytes).decode()
avatar_html = f''
else:
avatar_html = """