Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from Data_Fetching_and_Rendering import fetch_org_urn | |
| # shared state | |
| token_received = {"status": False, "token": "", "client_id": ""} | |
| # 1) this will be called by POST | |
| def receive_token(accessToken: dict, client_id: str): | |
| token_received["status"] = True | |
| token_received["token"] = accessToken | |
| token_received["client_id"] = client_id | |
| return { | |
| "status": "✅ Code received", | |
| "token": accessToken, | |
| "client_id": client_id | |
| } | |
| # 2) poll for status | |
| def check_status(): | |
| return "✅ Code received" if token_received["status"] else "❌ Waiting for code…" | |
| def show_token(): | |
| return token_received["token"] if token_received["status"] else "" | |
| def show_client_id(): | |
| return token_received["client_id"] if token_received["status"] else "" | |
| # 3) fetch after token arrives | |
| def fetch_and_render(): | |
| if not token_received["status"]: | |
| return "", "" | |
| return fetch_org_urn(token_received["client_id"], token_received["token"]) | |
| # 4) reset everything | |
| def reset_status(): | |
| token_received["status"] = False | |
| token_received["token"] = "" | |
| token_received["client_id"] = "" | |
| return "❌ Waiting for code…", "", "", "", "" | |
| with gr.Blocks() as demo: | |
| # Hidden inputs for POST | |
| hidden_token = gr.Textbox(visible=False, elem_id="hidden_token") | |
| hidden_client_id = gr.Textbox(visible=False, elem_id="hidden_client_id") | |
| hidden_btn = gr.Button(visible=False, elem_id="hidden_btn") | |
| # Display elements | |
| status_box = gr.Textbox(value=check_status(), label="Status", interactive=False) | |
| token_display = gr.Textbox(value=show_token(), label="Received Token", interactive=False) | |
| client_display = gr.Textbox(value=show_client_id(), label="Client ID", interactive=False) | |
| urn_display = gr.Textbox(value="", label="Org URN", interactive=False) | |
| name_display = gr.Textbox(value="", label="Org Name", interactive=False) | |
| # Wire hidden POST handler | |
| hidden_btn.click( | |
| fn=receive_token, | |
| inputs=[hidden_token, hidden_client_id], | |
| outputs=[status_box, token_display, client_display] | |
| ) | |
| with gr.Row(): | |
| gr.Button("Refresh Status").click(fn=check_status, outputs=status_box) | |
| gr.Button("Reset").click( | |
| fn=reset_status, | |
| outputs=[status_box, token_display, client_display, urn_display, name_display] | |
| ) | |
| # Timer triggers polling and fetch | |
| # Timer triggers polling and fetch | |
| timer = gr.Timer(1.0) | |
| timer.tick(fn=check_status, outputs=status_box) | |
| timer.tick(fn=show_token, outputs=token_display) # ← ADD BACK | |
| timer.tick(fn=show_client_id, outputs=client_display) # ← ADD BACK | |
| timer.tick(fn=fetch_and_render, outputs=[urn_display, name_display]) | |
| # Launch | |
| demo.launch(server_name="0.0.0.0", server_port=7860) |