feat: fix gatcha, and login flow connection

This commit is contained in:
2026-04-24 02:50:16 +08:00
parent d97109aa8d
commit 5a08db38de
15 changed files with 400 additions and 145 deletions
+14 -7
View File
@@ -73,7 +73,8 @@ func _try_restore_session() -> void:
session = refreshed
_save_session(session, saved_auth_mode)
else:
print("[AuthManager] Session refresh failed, need to re-login")
var err_msg: String = refreshed.get_exception().message
print("[AuthManager] Session refresh failed (%s) — need to re-login" % err_msg)
return
else:
print("[AuthManager] Session expired, need to re-login")
@@ -85,12 +86,18 @@ func _try_restore_session() -> void:
is_guest = auth_mode == AuthMode.GUEST
var socket_success := await _connect_socket()
if socket_success:
await _load_user_profile()
is_authenticated = true
emit_signal("session_restored")
emit_signal("auth_completed", true, current_user)
print("[AuthManager] Session restored successfully")
if not socket_success:
# Clean up so manual login starts from a blank slate
push_warning("[AuthManager] Session restore failed — socket could not connect. Resetting state.")
NakamaManager.session = null
NakamaManager.socket = null
return
await _load_user_profile()
is_authenticated = true
emit_signal("session_restored")
emit_signal("auth_completed", true, current_user)
print("[AuthManager] Session restored successfully")
func _save_session(session: NakamaSession, mode: AuthMode) -> void:
var file := FileAccess.open_encrypted_with_pass(SESSION_FILE, FileAccess.WRITE, ENCRYPTION_KEY)
+8 -2
View File
@@ -405,11 +405,17 @@ func _reload_wallet() -> void:
func save_wallet() -> void:
"""Persist wallet deductions and fragment counts to Nakama storage."""
if not NakamaManager.session: return
if not NakamaManager.session:
print("[UserProfileManager] save_wallet: no session, saved in-memory only.")
return
var write_objs: Array = [
NakamaWriteStorageObject.new(PROFILE_COLLECTION, "fragments", 1, 1, JSON.stringify(fragments), "")
]
await NakamaManager.client.write_storage_objects_async(NakamaManager.session, write_objs)
var result = await NakamaManager.client.write_storage_objects_async(NakamaManager.session, write_objs)
if result.is_exception():
push_warning("[UserProfileManager] save_wallet failed: " + result.get_exception().message)
else:
print("[UserProfileManager] Fragments saved.")
# =============================================================================
# Stats Management