Hamza4100 commited on
Commit
e65e672
Β·
verified Β·
1 Parent(s): f091490

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +27 -12
src/streamlit_app.py CHANGED
@@ -432,7 +432,6 @@ def upload_and_poll_files(api_key: str, uploaded_files: list):
432
  if "processed_files" not in st.session_state:
433
  st.session_state.processed_files = []
434
 
435
- # Only keep files not yet processed
436
  files_to_process = [f for f in uploaded_files if f.name not in st.session_state.processed_files]
437
 
438
  if not files_to_process:
@@ -452,7 +451,8 @@ def upload_and_poll_files(api_key: str, uploaded_files: list):
452
 
453
  data = result.get("data") or {}
454
  job_id = data.get("document_id") or data.get("job_id")
455
- status = data.get("status", "queued") # default to queued if not provided
 
456
 
457
  # Poll until final status
458
  if job_id:
@@ -463,8 +463,6 @@ def upload_and_poll_files(api_key: str, uploaded_files: list):
463
  elapsed = 0
464
 
465
  final_status = status
466
- display_name = st.session_state.username or "You"
467
-
468
  while elapsed < max_poll_seconds:
469
  try:
470
  resp = requests.get(
@@ -497,6 +495,11 @@ def upload_and_poll_files(api_key: str, uploaded_files: list):
497
  if elapsed >= max_poll_seconds:
498
  st.error(f"❌ {file.name}: Processing timed out after {max_poll_seconds}s")
499
 
 
 
 
 
 
500
  elif status == "success":
501
  st.success(f"βœ… {file.name} uploaded and processed successfully")
502
  else:
@@ -506,7 +509,11 @@ def upload_and_poll_files(api_key: str, uploaded_files: list):
506
  st.session_state.processed_files.append(file.name)
507
  progress_bar.progress((i + 1) / len(files_to_process))
508
 
509
- status_text.text("βœ… Upload complete!")
 
 
 
 
510
 
511
  # ============================================
512
  # MAIN APPLICATION UI
@@ -562,15 +569,23 @@ def show_main_app():
562
 
563
  # Integrated uploader (upload before asking)
564
  uploaded_files = st.file_uploader(
565
- "Upload PDF files (optional)",
566
- type=["pdf"],
567
- accept_multiple_files=True,
568
- key="pdf_uploader"
569
- )
 
 
570
 
571
- if uploaded_files:
 
572
  if st.button("πŸ“€ Upload All", use_container_width=True, type="secondary"):
573
- upload_and_poll_files(st.session_state.api_key, uploaded_files)
 
 
 
 
 
574
 
575
  # Chat interface
576
  # Provide a scope selector: General (all docs) or a specific uploaded document
 
432
  if "processed_files" not in st.session_state:
433
  st.session_state.processed_files = []
434
 
 
435
  files_to_process = [f for f in uploaded_files if f.name not in st.session_state.processed_files]
436
 
437
  if not files_to_process:
 
451
 
452
  data = result.get("data") or {}
453
  job_id = data.get("document_id") or data.get("job_id")
454
+ status = data.get("status", "queued")
455
+ display_name = st.session_state.username or "You"
456
 
457
  # Poll until final status
458
  if job_id:
 
463
  elapsed = 0
464
 
465
  final_status = status
 
 
466
  while elapsed < max_poll_seconds:
467
  try:
468
  resp = requests.get(
 
495
  if elapsed >= max_poll_seconds:
496
  st.error(f"❌ {file.name}: Processing timed out after {max_poll_seconds}s")
497
 
498
+ # Clear polling message after a short delay
499
+ time.sleep(2)
500
+ poll_text.empty()
501
+ poll_progress.empty()
502
+
503
  elif status == "success":
504
  st.success(f"βœ… {file.name} uploaded and processed successfully")
505
  else:
 
509
  st.session_state.processed_files.append(file.name)
510
  progress_bar.progress((i + 1) / len(files_to_process))
511
 
512
+ # Final upload complete message, disappears after 2s
513
+ status_text.success("βœ… Upload complete!")
514
+ time.sleep(2)
515
+ status_text.empty()
516
+ progress_bar.empty()
517
 
518
  # ============================================
519
  # MAIN APPLICATION UI
 
569
 
570
  # Integrated uploader (upload before asking)
571
  uploaded_files = st.file_uploader(
572
+ "Upload PDF files (optional)",
573
+ type=["pdf"],
574
+ accept_multiple_files=True,
575
+ key="pdf_uploader")
576
+
577
+ # Filter out already processed files so they disappear from uploader
578
+ display_files = [f for f in uploaded_files if f.name not in st.session_state.get("processed_files", [])]
579
 
580
+
581
+ if display_files:
582
  if st.button("πŸ“€ Upload All", use_container_width=True, type="secondary"):
583
+ upload_and_poll_files(st.session_state.api_key, display_files)
584
+ else:
585
+ if uploaded_files:
586
+ st.info("βœ… All uploaded files have been processed and removed from uploader.")
587
+
588
+
589
 
590
  # Chat interface
591
  # Provide a scope selector: General (all docs) or a specific uploaded document