fix(demo & streak): fix Neha demo account hang, enhance streak animation for light/dark modes and cries/celebration emojis

This commit is contained in:
2026-09-20 12:37:11 +05:30
parent c17785e38a
commit 6307a24c4c
4 changed files with 866 additions and 433 deletions

View File

@@ -660,7 +660,7 @@ DEMO_DEFINITIONS = {
},
UUID("33333333-3333-3333-3333-333333333333"): {
"name": "Neha Verma",
"email": "demo@pragativeer.com",
"email": "neha.demo@pragativeer.com",
"phone": "9999999997",
"student_class": models.ClassEnum.TWELFTH,
"medium": models.MediumEnum.ENGLISH,
@@ -708,18 +708,30 @@ def ensure_demo_user(user_id: UUID, session: Session) -> Optional[models.User]:
if user:
return user
if user_id in DEMO_DEFINITIONS:
data = DEMO_DEFINITIONS[user_id]
data = DEMO_DEFINITIONS[user_id].copy()
import bcrypt
new_demo = models.User(
id=user_id,
password_hash=bcrypt.hashpw("Pv9#kL2$mQ8!vX4@".encode('utf-8'), bcrypt.gensalt()).decode('utf-8'),
last_active=datetime.utcnow(),
**data
)
session.add(new_demo)
session.commit()
session.refresh(new_demo)
return new_demo
try:
# Defensive duplicate check
existing_email = session.exec(select(models.User).where(models.User.email == data["email"])).first()
if existing_email and existing_email.id != user_id:
data["email"] = f"demo_{str(user_id)[:8]}@pragativeer.com"
existing_phone = session.exec(select(models.User).where(models.User.phone == data["phone"])).first()
if existing_phone and existing_phone.id != user_id:
data["phone"] = f"99{str(int(user_id.int))[-8:]}"
new_demo = models.User(
id=user_id,
password_hash=bcrypt.hashpw("Pv9#kL2$mQ8!vX4@".encode('utf-8'), bcrypt.gensalt()).decode('utf-8'),
last_active=datetime.utcnow(),
**data
)
session.add(new_demo)
session.commit()
session.refresh(new_demo)
return new_demo
except Exception:
session.rollback()
return session.get(models.User, user_id)
return None
@app.get("/api/user/switch", tags=["Users"])