elkay
Browse files
phase/Student_view/games/MoneyMatch.py
CHANGED
|
@@ -8,6 +8,11 @@ import streamlit as st
|
|
| 8 |
from utils import db as dbapi
|
| 9 |
import time
|
| 10 |
from utils import db as db_util
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
# ---------- paths ----------
|
| 13 |
PROJECT_ROOT = Path(__file__).resolve().parents[3]
|
|
@@ -51,24 +56,35 @@ def _award_xp(gained: int):
|
|
| 51 |
ss.mm_level += 1
|
| 52 |
|
| 53 |
def _persist_success(gained_xp: int):
|
| 54 |
-
user = st.session_state.get("user")
|
| 55 |
-
|
|
|
|
| 56 |
st.error("Not saving. No logged-in user_id in session.")
|
| 57 |
return
|
| 58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
try:
|
| 60 |
-
dbapi
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
st.
|
| 69 |
except Exception as e:
|
| 70 |
st.error(f"Save failed: {e}")
|
| 71 |
|
|
|
|
| 72 |
# --- CSS injection (run every render) ---
|
| 73 |
def _inject_css():
|
| 74 |
css_path = PROJECT_ROOT / "assets" / "styles.css"
|
|
|
|
| 8 |
from utils import db as dbapi
|
| 9 |
import time
|
| 10 |
from utils import db as db_util
|
| 11 |
+
from utils import api
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
USE_LOCAL_DB = os.getenv("DISABLE_DB", "1") != "1"
|
| 15 |
+
|
| 16 |
|
| 17 |
# ---------- paths ----------
|
| 18 |
PROJECT_ROOT = Path(__file__).resolve().parents[3]
|
|
|
|
| 56 |
ss.mm_level += 1
|
| 57 |
|
| 58 |
def _persist_success(gained_xp: int):
|
| 59 |
+
user = st.session_state.get("user") or {}
|
| 60 |
+
user_id = int(user.get("user_id", 0))
|
| 61 |
+
if not user_id:
|
| 62 |
st.error("Not saving. No logged-in user_id in session.")
|
| 63 |
return
|
| 64 |
+
|
| 65 |
+
payload = dict(
|
| 66 |
+
user_id=user_id,
|
| 67 |
+
target=int(st.session_state.mm_target),
|
| 68 |
+
total=int(st.session_state.mm_total),
|
| 69 |
+
elapsed_ms=int((time.perf_counter() - st.session_state.mm_start_ts) * 1000),
|
| 70 |
+
matched=True,
|
| 71 |
+
gained_xp=int(gained_xp),
|
| 72 |
+
)
|
| 73 |
+
|
| 74 |
try:
|
| 75 |
+
if USE_LOCAL_DB and hasattr(dbapi, "record_money_match_play"):
|
| 76 |
+
# direct DB mode
|
| 77 |
+
dbapi.record_money_match_play(**payload)
|
| 78 |
+
st.toast(f"Saved to DB +{gained_xp} XP")
|
| 79 |
+
else:
|
| 80 |
+
# backend mode (DISABLE_DB=1)
|
| 81 |
+
api.record_money_match_play(**payload)
|
| 82 |
+
st.toast(f"Saved via backend +{gained_xp} XP")
|
| 83 |
+
st.session_state.mm_saved = True
|
| 84 |
except Exception as e:
|
| 85 |
st.error(f"Save failed: {e}")
|
| 86 |
|
| 87 |
+
|
| 88 |
# --- CSS injection (run every render) ---
|
| 89 |
def _inject_css():
|
| 90 |
css_path = PROJECT_ROOT / "assets" / "styles.css"
|