Hi there, I am new to Streamlit and having issues with the st.file_uploader callback. I have a Semantic search app which has an input box for the url and another input box for the search question. The user also has an option to upload a file and search using the search input box. TO provide a good user experience, I was trying to clear both input boxes once the user uploads a file so that they can type in the search question but it keeps continuously clearing the text in the Search query. It’s like the callback keeps running persistently.
if "text_url" not in st.session_state: st.session_state["text_url"] = "https://www.rba.gov.au/monetary-policy/rba-board-minutes/2022/2022-05-03.html" if "text_input" not in st.session_state: st.session_state["text_input"] = "What are the expectations for inflation for Australia?" def clear_text(): st.session_state["text_url"] = " " st.session_state["text_input"]= " " def clear_search_text(): st.session_state["text_input"]= " " url_text = st.text_input("Please Enter a url here",key='text_url',on_change=clear_search_text) st.markdown( "<h3 style='text-align: center; color: red;'>OR</h3>", unsafe_allow_html=True, ) upload_doc = st.file_uploader( "Upload a .txt, .pdf, .docx file" ,on_change=clear_text, key="doc_uploaded") search_query = st.text_input("Please Enter your search query here",key="text_input") if validators.url(url_text): #if input is URL title, text = extract_text_from_url(url_text) passages = preprocess_plain_text(text,window_size=window_size) elif upload_doc: text, pdf_title = extract_text_from_file(upload_doc) passages = preprocess_plain_text(text,window_size=window_size)```