Luigi commited on
Commit
79cb8cd
Β·
1 Parent(s): c0889b4

fix: Disable download button until content exists - prevent empty download field UX issue

Browse files

- Download button now disabled by default (interactive=False)
- Button only enables after successful generation completes
- Uses .then() chain to enable button after streaming finishes
- Hidden download_output component for cleaner UX

Files changed (1) hide show
  1. app.py +8 -2
app.py CHANGED
@@ -1029,7 +1029,10 @@ def create_interface():
1029
  with gr.Row():
1030
  copy_summary_btn = gr.Button("πŸ“‹ Copy Summary", size="sm")
1031
  copy_thinking_btn = gr.Button("πŸ“‹ Copy Thinking", size="sm")
1032
- download_btn = gr.Button("⬇️ Download (JSON)", size="sm")
 
 
 
1033
 
1034
  # Event handlers
1035
  submit_btn.click(
@@ -1037,6 +1040,9 @@ def create_interface():
1037
  inputs=[file_input, model_dropdown, enable_reasoning, max_tokens, temperature_slider, top_p, top_k, language_selector],
1038
  outputs=[thinking_output, summary_output, info_output, metrics_state],
1039
  show_progress="full"
 
 
 
1040
  )
1041
 
1042
  model_dropdown.change(
@@ -1064,7 +1070,7 @@ def create_interface():
1064
  download_btn.click(
1065
  fn=download_summary_json,
1066
  inputs=[summary_output, thinking_output, model_dropdown, language_selector, metrics_state],
1067
- outputs=[gr.File(label="Download")]
1068
  )
1069
 
1070
  # Footer
 
1029
  with gr.Row():
1030
  copy_summary_btn = gr.Button("πŸ“‹ Copy Summary", size="sm")
1031
  copy_thinking_btn = gr.Button("πŸ“‹ Copy Thinking", size="sm")
1032
+ download_btn = gr.Button("⬇️ Download (JSON)", size="sm", interactive=False)
1033
+
1034
+ # Hidden file output for download (not shown until ready)
1035
+ download_output = gr.File(label="Download", visible=False)
1036
 
1037
  # Event handlers
1038
  submit_btn.click(
 
1040
  inputs=[file_input, model_dropdown, enable_reasoning, max_tokens, temperature_slider, top_p, top_k, language_selector],
1041
  outputs=[thinking_output, summary_output, info_output, metrics_state],
1042
  show_progress="full"
1043
+ ).then(
1044
+ fn=lambda: gr.Button(interactive=True),
1045
+ outputs=[download_btn]
1046
  )
1047
 
1048
  model_dropdown.change(
 
1070
  download_btn.click(
1071
  fn=download_summary_json,
1072
  inputs=[summary_output, thinking_output, model_dropdown, language_selector, metrics_state],
1073
+ outputs=[download_output]
1074
  )
1075
 
1076
  # Footer