package com.narutohuo.xindazhou.common.config

import android.content.Context
import com.narutohuo.xindazhou.core.log.ILog
import com.narutohuo.xindazhou.core.storage.StorageImpl

/**
 * 服务器配置管理器
 * 用于管理开发测试时的服务器地址配置
 * 
 * 统一配置服务器IP，然后根据不同服务类型连接不同端口：
 * - HTTP API服务：18080（用户服务）、18082（消息服务）
 * - SocketIO服务：9090
 */
object ServerConfigManager {
    
    private const val KEY_SERVER_IP = "server_ip"
    private const val DEFAULT_SERVER_IP = "192.168.1.107"
    
    // 服务端口配置
    private const val PORT_HTTP_USER = 18080
    private const val PORT_HTTP_MESSAGE = 18082
    private const val PORT_SOCKETIO = 9090
    
    /**
     * 初始化（在Application中调用）
     */
    fun init(context: Context) {
        // 确保 StorageImpl 已初始化
        if (!StorageImpl.isInitialized()) {
            StorageImpl.init(context)
        }
        ILog.d("ServerConfigManager", "初始化完成，当前IP: ${getServerIp()}")
    }
    
    /**
     * 获取服务器IP地址
     */
    fun getServerIp(): String {
        val ip = StorageImpl.getString(KEY_SERVER_IP)
        return if (ip.isEmpty()) DEFAULT_SERVER_IP else ip
    }
    
    /**
     * 设置服务器IP地址
     */
    fun setServerIp(ip: String) {
        StorageImpl.putString(KEY_SERVER_IP, ip)
        ILog.d("ServerConfigManager", "服务器IP已更新为: $ip")
    }
    
    /**
     * 获取HTTP API服务器地址（用户服务）
     */
    fun getHttpServerUrl(): String {
        val ip = getServerIp()
        val url = "http://$ip:$PORT_HTTP_USER/app-api/"
        ILog.d("ServerConfigManager", "HTTP服务器地址: $url")
        return url
    }
    
    /**
     * 获取SocketIO服务器地址
     */
    fun getSocketIOUrl(): String {
        val ip = getServerIp()
        val url = "http://$ip:$PORT_SOCKETIO"
        ILog.d("ServerConfigManager", "SocketIO服务器地址: $url")
        return url
    }
    
    /**
     * 重置为默认IP
     */
    fun resetToDefault() {
        setServerIp(DEFAULT_SERVER_IP)
    }
}

