""" Multi-user experiment. User data is isolated from other users. untested on Hugging Face Spaces. """ import random import string import gradio as gr import time with gr.Blocks() as demo: gr.Markdown("Your Username and Password will get saved in the browser's local storage. " "If you refresh the page, the values will be retained.") username = gr.Textbox(label="Username") password = gr.Textbox(label="Password", type="password") btn = gr.Button("Generate Randomly") local_storage = gr.BrowserState(["", ""]) saved_message = gr.Markdown("✅ Saved to local storage", visible=False) @btn.click(outputs=[username, password]) def generate_randomly(): u = "".join(random.choices(string.ascii_letters + string.digits, k=10)) p = "".join(random.choices(string.ascii_letters + string.digits, k=10)) return u, p @demo.load(inputs=[local_storage], outputs=[username, password]) def load_from_local_storage(saved_values): print("loading from local storage", saved_values) return saved_values[0], saved_values[1] @gr.on([username.change, password.change], inputs=[username, password], outputs=[local_storage]) def save_to_local_storage(username, password): return [username, password] @gr.on(local_storage.change, outputs=[saved_message]) def show_saved_message(): timestamp = time.strftime("%I:%M:%S %p") return gr.Markdown( f"✅ Saved to local storage at {timestamp}", visible=True ) if __name__ == "__main__": demo.launch()