Add legal consent and reliable external redirects
This commit is contained in:
+23
-3
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user