Add session expiry renewal flow
This commit is contained in:
+19
-2
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user