File size: 1,439 Bytes
1ef4e10
0fb23b8
1ef4e10
 
 
 
 
 
 
 
f7ef7d3
1ef4e10
 
 
c6fc32c
f7ef7d3
c6fc32c
f7ef7d3
 
 
 
c6fc32c
 
 
 
 
 
 
 
 
 
 
 
 
 
1ef4e10
f7ef7d3
 
c6fc32c
c8c252f
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
# components/header.py

import gradio as gr
from utils.auth import AuthService


class Header:
    def __init__(self):
        with gr.Row(variant="panel", elem_classes="header-row") as self.container:
            self.welcome = gr.Markdown()
            self.progress_display = gr.Markdown("")  # New element for progress display
            self.logout_btn = gr.Button("Log out", scale=0, min_width=90)

    # ---------------- wiring ----------------
    def register_callbacks(self, login_page, dashboard_page, session_state, review_dashboard_page=None):
        def logout_and_clear_progress_fn(current_session_state):
            # AuthService.logout returns 5 values for both dashboards
            logout_outputs = AuthService.logout(current_session_state)
            # Add an empty string to clear the progress_display
            return list(logout_outputs) + [""]

        outputs_for_logout = [
            login_page.container,
            dashboard_page.container,
        ]
        
        if review_dashboard_page:
            outputs_for_logout.append(review_dashboard_page.container)
            
        outputs_for_logout.extend([
            self.welcome,
            login_page.message,
            self.progress_display,  # Cleared on logout
        ])

        self.logout_btn.click(
            fn=logout_and_clear_progress_fn,
            inputs=[session_state],
            outputs=outputs_for_logout,
        )