File size: 1,898 Bytes
b560569
 
751e28f
a0b418d
b560569
751e28f
a0b418d
b560569
0f9e24f
a0b418d
751e28f
b560569
751e28f
b560569
 
 
0f9e24f
 
 
6e2376b
 
 
734a45c
 
0f9e24f
6e2376b
 
734a45c
b560569
6e2376b
 
 
 
b560569
751e28f
0f9e24f
6e2376b
94fc4da
734a45c
 
6e2376b
e3447a5
d45a226
 
 
dde01bf
7ab0240
6e2376b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import gradio as gr

# shared state
token_received = {"status": False, "token": "", "client_id": ""}

# 1) this will be called by POST
def receive_token(accessToken: str, client_id: str):
    token_received["status"] = True
    token_received["token"] = accessToken
    token_received["client_id"] = client_id
    return {"status": "ok"}

# 2) this just drives your UI
def check_status():
    return "βœ… Code received" if token_received["status"] else "❌ Code not received"

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 ""

def reset_status():
    token_received["status"] = False
    token_received["token"] = ""
    token_received["client_id"] = ""
    return "❌ Code not received", "", ""

with gr.Blocks() as demo:
    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")
    hidden_btn.click(fn=receive_token, inputs=[hidden_token, hidden_client_id], outputs=[])

    status_box = gr.Textbox(value=check_status(), label="Token Status", interactive=False)
    token_display = gr.Textbox(value=show_token(), label="Received Token", interactive=False)
    client_id_display = gr.Textbox(value=show_client_id(), label="Client ID", interactive=False)

    with gr.Row():
        refresh = gr.Button("Refresh").click(fn=check_status, outputs=status_box)
        reset = gr.Button("Reset Status").click(fn=reset_status, outputs=[status_box, token_display, client_id_display])

    # βœ… Correct usage of Timer
    timer = gr.Timer(1.0)
    timer.tick(fn=show_token, outputs=token_display)
    timer.tick(fn=show_client_id, outputs=client_id_display)

demo.launch(server_name="0.0.0.0", server_port=7860)