diff --git a/src/auracaster_webui/app.py b/src/auracaster_webui/app.py index 502a1ee..929788c 100644 --- a/src/auracaster_webui/app.py +++ b/src/auracaster_webui/app.py @@ -43,7 +43,7 @@ if "status_container_key" not in st.session_state: def show_announcement_status(): try: status_data = get_announcement_status() - if status_data["state"] != "Ready": + if status_data["state"] != "idle": # Create a container with a unique key for each announcement # This ensures we get a fresh container for each new announcement with st.container(key=f"status_container_{st.session_state.status_container_key}"): @@ -59,7 +59,7 @@ def show_announcement_status(): last_state = None # Update loop - while status_data["state"] not in ["Complete", "Error"]: + while status_data["state"] not in ["complete", "error"]: # Update time elapsed continuously # Only update stage display if state changed @@ -79,7 +79,7 @@ def show_announcement_status(): progress_bar.progress(status_data["progress"]) # Final state - if status_data["state"] == "Error": + if status_data["state"] == "error": st.error(f"❌ Error: {status_data['error']}") else: st.success("✅ Announcement completed successfully") @@ -203,6 +203,32 @@ with st.sidebar: st.session_state[f"prev_{endpoints_key}"] = selected_endpoints st.session_state.endpoint_groups = get_groups() st.rerun() + + # Add language selection + available_languages = st.session_state.available_languages + # Use a unique key for the languages multiselect + languages_key = f"languages_select_{i}" + + # Initialize the previous value in session state if not present + if f"prev_{languages_key}" not in st.session_state: + st.session_state[f"prev_{languages_key}"] = group.get("languages", []) + + selected_languages = st.multiselect( + f"Languages", + options=available_languages, + default=group.get("languages", []), + key=languages_key + ) + + # Only update if languages have changed and they're different from previous value + if selected_languages != group.get("languages", []) and selected_languages != st.session_state[f"prev_{languages_key}"]: + updated_group = group.copy() + updated_group["languages"] = selected_languages + update_group(group["id"], updated_group) + # Update the previous value before rerunning + st.session_state[f"prev_{languages_key}"] = selected_languages + st.session_state.endpoint_groups = get_groups() + st.rerun() except requests.exceptions.RequestException as e: st.error(f"Failed to get available endpoints: {str(e)}") @@ -226,15 +252,24 @@ with st.sidebar: try: available_endpoints = get_available_endpoints() new_group_endpoints = st.multiselect("Endpoints", options=available_endpoints) + + # Add language selection for new group + available_languages = st.session_state.available_languages + new_group_languages = st.multiselect("Languages", options=available_languages) except requests.exceptions.RequestException as e: st.error(f"Failed to get available endpoints: {str(e)}") new_group_endpoints = [] + new_group_languages = [] if st.form_submit_button("Add Group"): if new_group_name: try: from api_client.client import create_group - new_group = {"name": new_group_name, "endpoints": new_group_endpoints} + new_group = { + "name": new_group_name, + "endpoints": new_group_endpoints, + "languages": new_group_languages + } create_group(new_group) # Update the session state with the latest groups st.session_state.endpoint_groups = get_groups()