using System; using System.Collections; using System.Threading.Tasks; using UnityEngine; using UnityEngine.Networking; namespace Hallucinate.UI { public static class FirebaseService { private static string _baseUrl; private static string BASE_URL { get { if (string.IsNullOrEmpty(_baseUrl)) { // Nó sẽ tìm file tên "FirebaseConfig" trong bất kỳ folder "Resources" nào var config = Resources.Load("FirebaseConfig"); if (config != null) { if (string.IsNullOrEmpty(config.baseUrl)) { Debug.LogError("[FirebaseService] Base URL trong file FirebaseConfig đang trống!"); return null; } _baseUrl = config.baseUrl.TrimEnd('/'); } else { Debug.LogError("[FirebaseService] Không tìm thấy file 'FirebaseConfig' trong folder Resources! " + "Hãy đảm bảo bạn đã tạo file tại: Assets/.../Resources/FirebaseConfig"); return null; } } return _baseUrl + "/users"; } } public static async Task IsUsernameTaken(string username) { string url = $"{BASE_URL}/{username}.json"; using (UnityWebRequest request = UnityWebRequest.Get(url)) { var operation = request.SendWebRequest(); while (!operation.isDone) await Task.Yield(); if (request.result != UnityWebRequest.Result.Success) return false; // Nếu kết quả trả về không phải "null" nghĩa là user đã tồn tại return request.downloadHandler.text != "null"; } } public static async Task RegisterUser(string username) { string url = $"{BASE_URL}/{username}.json"; string jsonData = "{\"created_at\": \"" + DateTime.Now.ToString() + "\"}"; using (UnityWebRequest request = UnityWebRequest.Put(url, jsonData)) { var operation = request.SendWebRequest(); while (!operation.isDone) await Task.Yield(); return request.result == UnityWebRequest.Result.Success; } } } }