Add session expiry renewal flow

This commit is contained in:
hz
2026-07-18 15:53:11 -05:00
parent 8c349314ad
commit a232e18c46
14 changed files with 575 additions and 21 deletions
+19 -2
View File
@@ -12,6 +12,7 @@ var sound_toggle: CheckButton
var theme_button: Button
var feedback_button: Button
var feedback_dialog: Control
var session_expiry_dialog: Control
var theme_service
var current_screen_name := ""
var screens_margin: MarginContainer
@@ -285,10 +286,15 @@ func _build_ui() -> void:
feedback_dialog = preload("res://scripts/ui/app_feedback_dialog.gd").new()
feedback_dialog.name = "AppFeedbackDialog"
add_child(feedback_dialog)
session_expiry_dialog = preload("res://scripts/ui/session_expiry_dialog.gd").new()
session_expiry_dialog.name = "SessionExpiryDialog"
session_expiry_dialog.logout_requested.connect(_logout)
add_child(session_expiry_dialog)
_build_account_menu()
_build_drawer()
AuthState.auth_changed.connect(_refresh_header_controls)
AuthState.session_expired.connect(_on_session_expired)
_refresh_header_controls()
_build_app_menu()
@@ -682,14 +688,25 @@ func _refresh_theme_button() -> void:
func _logout() -> void:
_perform_logout("")
func _on_session_expired(_reason: String) -> void:
_perform_logout("Your session expired. Sign in again.")
func _perform_logout(login_message: String) -> void:
_close_app_menu()
if session_expiry_dialog != null and session_expiry_dialog.has_method("dismiss_for_logout"):
session_expiry_dialog.dismiss_for_logout()
if BlockSessionService.block_started and BlockSessionService.session_kind != "simulation":
BlockSessionService.finish_block()
elif BlockSessionService.session_kind == "simulation":
BlockSessionService.block_started = false
QuestionBankService.clear_questions()
AuthState.clear_session()
show_screen("login")
if AuthState.is_logged_in or not AuthState.access_token.is_empty():
AuthState.clear_session()
show_screen("login", login_message)
func _build_app_menu() -> void: