Add legal consent and reliable external redirects

This commit is contained in:
hz
2026-07-20 02:16:20 -05:00
parent 2615ab4773
commit dae3a31b71
25 changed files with 756 additions and 14 deletions
+23 -3
View File
@@ -15,6 +15,7 @@ var feedback_button: Button
var feedback_dialog: Control
var notes_dialog: Control
var session_expiry_dialog: Control
var legal_document_dialog: Control
var theme_service
var current_screen_name := ""
var screens_margin: MarginContainer
@@ -40,7 +41,7 @@ func _ready() -> void:
theme_service.theme_changed.connect(_on_theme_changed)
resized.connect(_update_responsive_layout)
_update_responsive_layout()
show_screen("dashboard" if AuthState.is_logged_in else "login")
show_screen(("legal_consent" if AuthState.requires_legal_acceptance else "dashboard") if AuthState.is_logged_in else "login")
func _update_responsive_layout() -> void:
@@ -216,6 +217,12 @@ func _build_ui() -> void:
screens_container.add_child(login)
screens["login"] = login
var legal_consent := preload("res://scripts/ui/legal_consent_screen.gd").new()
legal_consent.name = "LegalConsentScreen"
legal_consent.main = self
screens_container.add_child(legal_consent)
screens["legal_consent"] = legal_consent
var dashboard := preload("res://scripts/ui/dashboard_screen.gd").new()
dashboard.name = "DashboardScreen"
dashboard.main = self
@@ -330,10 +337,13 @@ func _build_ui() -> void:
session_expiry_dialog.name = "SessionExpiryDialog"
session_expiry_dialog.logout_requested.connect(_logout)
add_child(session_expiry_dialog)
legal_document_dialog = preload("res://scripts/ui/legal_document_dialog.gd").new()
legal_document_dialog.name = "LegalDocumentDialog"
add_child(legal_document_dialog)
_build_account_menu()
_build_drawer()
AuthState.auth_changed.connect(_refresh_header_controls)
AuthState.auth_changed.connect(_on_auth_changed)
AuthState.session_expired.connect(_on_session_expired)
_refresh_header_controls()
_build_app_menu()
@@ -534,7 +544,7 @@ func _close_account_menu() -> void:
func _screen_uses_shell(screen_name: String) -> bool:
return AuthState.is_logged_in and screen_name not in ["login", "player", "ccs_player"]
return AuthState.is_logged_in and screen_name not in ["login", "legal_consent", "player", "ccs_player"]
func _update_shell_visibility(screen_name: String) -> void:
@@ -706,6 +716,16 @@ func open_feedback_dialog() -> void:
feedback_dialog.show_dialog(FeedbackService.build_context(current_screen_name, get_viewport_rect().size))
func open_legal_document(kind: String) -> void:
legal_document_dialog.show_document(kind)
func _on_auth_changed() -> void:
_refresh_header_controls()
if AuthState.is_logged_in and AuthState.requires_legal_acceptance and current_screen_name not in ["login", "legal_consent"]:
show_screen("legal_consent")
func open_notes_dialog() -> void:
if not AuthState.is_logged_in or notes_dialog == null:
return