duongthienz commited on
Commit
21f8bdd
·
verified ·
1 Parent(s): e259f0f

Fix a token bug that can crash the app

Browse files
Files changed (1) hide show
  1. ui.py +13 -4
ui.py CHANGED
@@ -72,11 +72,16 @@ def render_role_sidebar(display_speaker_tokens, token_display_map):
72
  )
73
  st.sidebar.text(" ")
74
 
 
75
  for i, category in enumerate(st.session_state.categories):
76
  ms_key = f"multiselect_{category}"
77
- # Always sync widget key from data model, converting raw -> display
 
78
  raw_vals = st.session_state.categorySelect[i] if i < len(st.session_state.categorySelect) else []
79
- st.session_state[ms_key] = [raw_to_display.get(t, t) for t in raw_vals]
 
 
 
80
 
81
  # Build claimed set (display labels) from widget keys
82
  all_claimed = {
@@ -141,10 +146,14 @@ def render_rename_sidebar(currFile, speakerNames, display_speaker_tokens, token_
141
  for token in entry["speakers"]
142
  }
143
 
 
144
  for idx, entry in enumerate(st.session_state.globalRenames):
145
  grkey = _global_rename_key(idx)
146
- # Always sync widget key from data model, converting raw -> display
147
- st.session_state[grkey] = [raw_to_display.get(t, t) for t in entry["speakers"]]
 
 
 
148
  label_col, trash_col = st.sidebar.columns([5, 1])
149
  label_col.markdown(f"**{entry['name']}**")
150
  trash_col.button(
 
72
  )
73
  st.sidebar.text(" ")
74
 
75
+ valid_display = set(display_speaker_tokens)
76
  for i, category in enumerate(st.session_state.categories):
77
  ms_key = f"multiselect_{category}"
78
+ # Sync widget key from data model (raw -> display), dropping any stale
79
+ # labels that are no longer valid (e.g. speaker was just renamed)
80
  raw_vals = st.session_state.categorySelect[i] if i < len(st.session_state.categorySelect) else []
81
+ st.session_state[ms_key] = [
82
+ raw_to_display.get(t, t) for t in raw_vals
83
+ if raw_to_display.get(t, t) in valid_display
84
+ ]
85
 
86
  # Build claimed set (display labels) from widget keys
87
  all_claimed = {
 
146
  for token in entry["speakers"]
147
  }
148
 
149
+ valid_display = set(display_speaker_tokens)
150
  for idx, entry in enumerate(st.session_state.globalRenames):
151
  grkey = _global_rename_key(idx)
152
+ # Sync widget key from data model (raw -> display), dropping stale labels
153
+ st.session_state[grkey] = [
154
+ raw_to_display.get(t, t) for t in entry["speakers"]
155
+ if raw_to_display.get(t, t) in valid_display
156
+ ]
157
  label_col, trash_col = st.sidebar.columns([5, 1])
158
  label_col.markdown(f"**{entry['name']}**")
159
  trash_col.button(