Rathapoom commited on
Commit
535b955
·
verified ·
1 Parent(s): 8100c93

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -10
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
- st.session_state.story = []
579
- st.session_state.feedback = None
580
- st.session_state.theme_story_starter = None
 
 
 
 
 
 
 
 
 
 
 
581
 
582
  # Reset points
583
- st.session_state.points = {
584
  'total': 0,
585
  'perfect_sentences': 0,
586
  'corrections_made': 0,
@@ -589,7 +600,7 @@ def reset_story():
589
  }
590
 
591
  # Reset stats
592
- st.session_state.stats = {
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 progress
 
 
 
 
 
 
 
604
  st.session_state.current_milestone = 0
605
  st.session_state.next_milestone = 5
606
 
607
- # Reset flag
608
- st.session_state.should_reset = False
 
 
 
 
 
 
 
 
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