minhahwang Copilot commited on
Commit
eacea91
·
1 Parent(s): 9dbd883

fix: pause playback on Ask click and tab switch (Explore/Clone)

Browse files

- Add cancels=[play_event] to ask_btn.click
- Add explore_tab.select and clone_tab.select handlers to cancel TTS

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Files changed (1) hide show
  1. app.py +25 -1
app.py CHANGED
@@ -947,7 +947,8 @@ with gr.Blocks(title="MomsVoice", css=css_code) as demo:
947
  ask_btn.click(
948
  enter_asking_state,
949
  inputs=[],
950
- outputs=[player_status_bar, play_btn, pause_btn, ask_btn, resume_btn, qa_panel, qa_input_group, answer_display, answer_audio]
 
951
  )
952
 
953
  # 9. Submit question
@@ -1074,5 +1075,28 @@ with gr.Blocks(title="MomsVoice", css=css_code) as demo:
1074
  outputs=[player_status_bar, play_btn, pause_btn, ask_btn, resume_btn, qa_panel, qa_input_group, answer_display, answer_audio, question_text, question_audio]
1075
  )
1076
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1077
  if __name__ == "__main__":
1078
  demo.queue().launch(allowed_paths=[str(Path(__file__).parent / "assets")])
 
947
  ask_btn.click(
948
  enter_asking_state,
949
  inputs=[],
950
+ outputs=[player_status_bar, play_btn, pause_btn, ask_btn, resume_btn, qa_panel, qa_input_group, answer_display, answer_audio],
951
+ cancels=[play_event]
952
  )
953
 
954
  # 9. Submit question
 
1075
  outputs=[player_status_bar, play_btn, pause_btn, ask_btn, resume_btn, qa_panel, qa_input_group, answer_display, answer_audio, question_text, question_audio]
1076
  )
1077
 
1078
+ # 11. Pause playback when switching to other tabs
1079
+ def pause_on_tab_switch():
1080
+ status_html = """
1081
+ <div style="margin-top: 12px; display: flex; align-items: center; gap: 10px; justify-content: center;">
1082
+ <span style="width: 8px; height: 8px; border-radius: 50%; background: #f59e0b; display: inline-block;"></span>
1083
+ <span style="font-size: 11px; color: #f59e0b; font-family: monospace;">PAUSED</span>
1084
+ </div>
1085
+ """
1086
+ return status_html, gr.Button(visible=True), gr.Button(visible=False)
1087
+
1088
+ explore_tab.select(
1089
+ pause_on_tab_switch,
1090
+ inputs=[],
1091
+ outputs=[player_status_bar, play_btn, pause_btn],
1092
+ cancels=[play_event]
1093
+ )
1094
+ clone_tab.select(
1095
+ pause_on_tab_switch,
1096
+ inputs=[],
1097
+ outputs=[player_status_bar, play_btn, pause_btn],
1098
+ cancels=[play_event]
1099
+ )
1100
+
1101
  if __name__ == "__main__":
1102
  demo.queue().launch(allowed_paths=[str(Path(__file__).parent / "assets")])