Update app.py
Browse files
app.py
CHANGED
@@ -572,15 +572,26 @@ def init_theme_state():
|
|
572 |
st.session_state.theme_story_starter = None
|
573 |
|
574 |
def reset_story():
|
575 |
-
"""Reset story and related state variables"""
|
576 |
try:
|
577 |
-
# Reset story-related states
|
578 |
-
|
579 |
-
|
580 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
581 |
|
582 |
# Reset points
|
583 |
-
|
584 |
'total': 0,
|
585 |
'perfect_sentences': 0,
|
586 |
'corrections_made': 0,
|
@@ -589,7 +600,7 @@ def reset_story():
|
|
589 |
}
|
590 |
|
591 |
# Reset stats
|
592 |
-
|
593 |
'total_sentences': 0,
|
594 |
'correct_first_try': 0,
|
595 |
'accuracy_rate': 0.0,
|
@@ -600,12 +611,27 @@ def reset_story():
|
|
600 |
'session_duration': 0
|
601 |
}
|
602 |
|
603 |
-
# Reset
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
604 |
st.session_state.current_milestone = 0
|
605 |
st.session_state.next_milestone = 5
|
606 |
|
607 |
-
# Reset
|
608 |
-
st.session_state
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
609 |
|
610 |
# Log reset
|
611 |
logging.info("Story state reset successfully")
|
@@ -1419,6 +1445,10 @@ def handle_theme_selection(theme: dict):
|
|
1419 |
"""Handle theme selection and initialization"""
|
1420 |
try:
|
1421 |
with st.spinner("กำลังเตรียมเรื่องราว..."):
|
|
|
|
|
|
|
|
|
1422 |
st.session_state.current_theme = theme['id']
|
1423 |
starter = generate_dynamic_story_starter(
|
1424 |
theme['id'],
|
@@ -1500,6 +1530,12 @@ def show_story():
|
|
1500 |
story_display = st.container()
|
1501 |
|
1502 |
with story_display:
|
|
|
|
|
|
|
|
|
|
|
|
|
1503 |
if not st.session_state.story:
|
1504 |
st.info("เลือกธีมเรื่องราวที่ต้องการเพื่อเริ่มต้นการผจญภัย!")
|
1505 |
return
|
@@ -3521,6 +3557,12 @@ def main():
|
|
3521 |
init_session_state()
|
3522 |
init_theme_state()
|
3523 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3524 |
# Initialize audio system
|
3525 |
initialize_audio()
|
3526 |
|
|
|
572 |
st.session_state.theme_story_starter = None
|
573 |
|
574 |
def reset_story():
|
575 |
+
"""Reset story and related state variables completely"""
|
576 |
try:
|
577 |
+
# Reset all story-related states
|
578 |
+
new_states = {
|
579 |
+
'story': [],
|
580 |
+
'feedback': None,
|
581 |
+
'theme_story_starter': None,
|
582 |
+
'text_input': "",
|
583 |
+
'current_theme': None,
|
584 |
+
'ending_mode': False,
|
585 |
+
'sentences_to_end': 0,
|
586 |
+
'ending_type': None,
|
587 |
+
'story_completed': False,
|
588 |
+
'stitched_story': None,
|
589 |
+
'clear_input': True,
|
590 |
+
'last_submission': None
|
591 |
+
}
|
592 |
|
593 |
# Reset points
|
594 |
+
new_points = {
|
595 |
'total': 0,
|
596 |
'perfect_sentences': 0,
|
597 |
'corrections_made': 0,
|
|
|
600 |
}
|
601 |
|
602 |
# Reset stats
|
603 |
+
new_stats = {
|
604 |
'total_sentences': 0,
|
605 |
'correct_first_try': 0,
|
606 |
'accuracy_rate': 0.0,
|
|
|
611 |
'session_duration': 0
|
612 |
}
|
613 |
|
614 |
+
# Reset all session states
|
615 |
+
for key, value in new_states.items():
|
616 |
+
st.session_state[key] = value
|
617 |
+
st.session_state.points = new_points
|
618 |
+
st.session_state.stats = new_stats
|
619 |
+
|
620 |
+
# Reset achievements and progress
|
621 |
+
st.session_state.achievements = []
|
622 |
st.session_state.current_milestone = 0
|
623 |
st.session_state.next_milestone = 5
|
624 |
|
625 |
+
# Reset UI elements
|
626 |
+
if 'story_input_area' in st.session_state:
|
627 |
+
del st.session_state.story_input_area
|
628 |
+
|
629 |
+
# Force new input field creation
|
630 |
+
st.session_state.clear_count = st.session_state.get('clear_count', 0) + 1
|
631 |
+
|
632 |
+
# Reset theme selection
|
633 |
+
st.session_state.theme_button_counter = 0
|
634 |
+
st.session_state.theme_selection_id = datetime.now().strftime('%Y%m%d%H%M%S')
|
635 |
|
636 |
# Log reset
|
637 |
logging.info("Story state reset successfully")
|
|
|
1445 |
"""Handle theme selection and initialization"""
|
1446 |
try:
|
1447 |
with st.spinner("กำลังเตรียมเรื่องราว..."):
|
1448 |
+
# Reset story completely first
|
1449 |
+
reset_story()
|
1450 |
+
|
1451 |
+
# Then set new theme
|
1452 |
st.session_state.current_theme = theme['id']
|
1453 |
starter = generate_dynamic_story_starter(
|
1454 |
theme['id'],
|
|
|
1530 |
story_display = st.container()
|
1531 |
|
1532 |
with story_display:
|
1533 |
+
# Clear previous story if resetting
|
1534 |
+
if st.session_state.get('should_reset'):
|
1535 |
+
reset_story()
|
1536 |
+
st.rerun()
|
1537 |
+
return
|
1538 |
+
|
1539 |
if not st.session_state.story:
|
1540 |
st.info("เลือกธีมเรื่องราวที่ต้องการเพื่อเริ่มต้นการผจญภัย!")
|
1541 |
return
|
|
|
3557 |
init_session_state()
|
3558 |
init_theme_state()
|
3559 |
|
3560 |
+
# Check if reset is needed
|
3561 |
+
if st.session_state.get('should_reset'):
|
3562 |
+
reset_story()
|
3563 |
+
st.rerun()
|
3564 |
+
return
|
3565 |
+
|
3566 |
# Initialize audio system
|
3567 |
initialize_audio()
|
3568 |
|