namespace Guru.Editor
{
    using System.IO;
    using UnityEditor;
    using UnityEngine;
    
    public class AndroidResMod
    {
        private static readonly string NetworkSecurityXmlName = "network_security_config.xml";
        private static readonly string LibNetworkSecurity = "GuruNetworkSecurity";
        private static readonly string LibNetworkSecurityPackageName = "com.guru.unity.sdk.android.res.network.security";
        private static string OldSecurityXml = Path.Combine(Application.dataPath, $"Plugins/Android/res/xml/{NetworkSecurityXmlName}");
        
        /// 
        /// 应用补丁
        /// 
        public static void Apply()
        {
            DeployNetworkSecurity();
        }
        /// 
        /// 部署网络安全配置
        /// 
        private static void DeployNetworkSecurity()
        {
            if(File.Exists(OldSecurityXml)) File.Delete(OldSecurityXml); // 清理旧文件
            if (!AndroidLibHelper.IsEmbeddedAndroidLibExists(LibNetworkSecurity))
            {
                string dir = AndroidLibHelper.CreateLibRoot(LibNetworkSecurityPackageName, LibNetworkSecurity);
                var d = GuruEditorHelper.GetAssetPath(nameof(AndroidResMod), "Script", true);
                if (!string.IsNullOrEmpty(d))
                {
                    var from = $"{Directory.GetParent(d)?.FullName ?? ""}/../Files/{NetworkSecurityXmlName}";
                    if (File.Exists(from))
                    {
                        string toDir = $"{dir}/res/xml";
                        if(!Directory.Exists(toDir))Directory.CreateDirectory(toDir);
                        string to = $"{toDir}/{NetworkSecurityXmlName}";
                        FileUtil.CopyFileOrDirectory(from, to);
                    }
                }
            }
        }
    }
}