duongthienz commited on
Commit
f3e7f6c
·
verified ·
1 Parent(s): c9e292b

Fix a bug where a removed name still appeared in rename drop-down list

Browse files
Files changed (1) hide show
  1. ui.py +21 -8
ui.py CHANGED
@@ -226,14 +226,27 @@ def render_speaker_samples_tab(speakerNames, raw_to_display, currFile):
226
  if "inline_rename_active" not in st.session_state:
227
  st.session_state.inline_rename_active = {}
228
 
229
- # Build the history list from all confirmed names: start from whatever was
230
- # saved from past sessions, then merge in any names already in globalRenames
231
- # so that sidebar-added names show up as history options in the tab too.
232
- if "inline_rename_history" not in st.session_state:
233
- st.session_state.inline_rename_history = []
234
- for entry in st.session_state.globalRenames:
235
- if entry["name"] not in st.session_state.inline_rename_history:
236
- st.session_state.inline_rename_history.append(entry["name"])
 
 
 
 
 
 
 
 
 
 
 
 
 
237
 
238
  def _get_role(sp):
239
  """Return the role name assigned to this speaker, or empty string."""
 
226
  if "inline_rename_active" not in st.session_state:
227
  st.session_state.inline_rename_active = {}
228
 
229
+ # Build the history list fresh each render:
230
+ # 1. Names currently in globalRenames (sidebar rename entries)
231
+ # 2. Names actively used in speakerRenames (confirmed via rename tab)
232
+ # Deleted sidebar entries are excluded automatically since we rebuild from scratch.
233
+ global_names = {entry["name"] for entry in st.session_state.globalRenames}
234
+ active_names = {
235
+ name
236
+ for renames in st.session_state.speakerRenames.values()
237
+ for name in renames.values()
238
+ }
239
+ # Preserve any tab-confirmed names that aren't in either set (typed manually)
240
+ # but drop names that were only ever in globalRenames and have since been removed.
241
+ prev_history = st.session_state.get("inline_rename_history", [])
242
+ st.session_state.inline_rename_history = [
243
+ name for name in prev_history
244
+ if name in global_names or name in active_names
245
+ ]
246
+ # Add any new names from globalRenames not yet in history
247
+ for name in global_names:
248
+ if name not in st.session_state.inline_rename_history:
249
+ st.session_state.inline_rename_history.append(name)
250
 
251
  def _get_role(sp):
252
  """Return the role name assigned to this speaker, or empty string."""