Mohamed-512 / Extra-Streamlit-Components

An all in one place, to find complex or just not available components by default on streamlit.
Apache License 2.0
466 stars 59 forks source link

Cookie key and value doesn't get updated in st.session_state #63

Open uprg opened 6 months ago

uprg commented 6 months ago

Python version

3.8.10

OS version

Ubuntu 20.04.6 LTS (focal)

streamlit version

1.32.1

extra_streamlit_components version

0.1.71

Describe the bug

The key and value of cookie set by cookie manager is not getting set in st.session_state but is set in browser cookies

https://github.com/Mohamed-512/Extra-Streamlit-Components/assets/56631384/04f665dc-2514-458d-9c6c-0c6c245116f3

To Reproduce

Install the above dependencies and run the below code

import extra_streamlit_components as stx
import streamlit as st

st.write(st.session_state)

if "is_logged_in" not in st.session_state:
    st.session_state["is_logged_in"] = False

cookie_manager = stx.CookieManager()

def check():
    # st.write("func called")
    # st.write(cookie_manager)
    user_cookie = cookie_manager.get(cookie="user")

    # st.write(user_cookie)

    if user_cookie:
        st.session_state["is_logged_in"] = True
    else:
        st.session_state["is_logged_in"] = False

check()

if st.session_state["is_logged_in"] == False:
    name = st.text_input(label="cookie name")
    value = st.text_input(label="cookie value")

    set = st.button(label="set cookie")

    if set:
        cookie_manager.set(cookie=name, val=value)
        #st.session_state["is_logged_in"] = True

if st.session_state["is_logged_in"] == True:
    get = st.button(label="get cookie")
    delete = st.button(label="delete cookie")

    if get:
        cookie_manager.get(cookie="user")

    if delete:
        cookie_manager.delete(cookie="user")

Expected behavior

The key and value should be set in st.session_state also with the browser cookie storage

souvikmaji commented 2 weeks ago

I don't think this is an expected behaviour.