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)```