Files
BABA_YAGA/Assets/Scripts/UI/FirebaseService.cs
2026-04-28 22:35:03 +07:00

71 lines
2.6 KiB
C#

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>("FirebaseConfig");
if (config != null)
{
if (string.IsNullOrEmpty(config.baseUrl))
{
Debug.LogError("<color=red>[FirebaseService]</color> Base URL trong file FirebaseConfig đang trống!");
return null;
}
_baseUrl = config.baseUrl.TrimEnd('/');
}
else
{
Debug.LogError("<color=red>[FirebaseService]</color> 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<bool> 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<bool> 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;
}
}
}
}