﻿using SingularityGroup.HotReload.Editor.Localization;
using UnityEditor;

namespace SingularityGroup.HotReload.Editor {
    internal class AllowAndroidAppToMakeHttpRequestsOption : ProjectOptionBase {
        public override string ShortSummary {
            get {
                return Translations.Settings.OptionAllowHttpRequests;
            }
        }

        public override string Summary => ShortSummary;

        public override bool GetValue(SerializedObject so) {
            #if UNITY_2022_1_OR_NEWER
            // use PlayerSettings as the source of truth 
            return PlayerSettings.insecureHttpOption != InsecureHttpOption.NotAllowed;
            #else
            return GetProperty(so).boolValue;
            #endif
        }

        public override string ObjectPropertyName =>
            nameof(HotReloadSettingsObject.AllowAndroidAppToMakeHttpRequests);

        public override void SetValue(SerializedObject so, bool value) {
            base.SetValue(so, value);

            // Enabling on Unity 2022 or newer → set the Unity option to ‘Development Builds only’
            #if UNITY_2022_1_OR_NEWER
            var notAllowed = PlayerSettings.insecureHttpOption == InsecureHttpOption.NotAllowed;
            if (value) {
                // user chose to enable it
                if (notAllowed) {
                    PlayerSettings.insecureHttpOption = InsecureHttpOption.DevelopmentOnly;
                }
            } else {
                // user chose to disable it
                PlayerSettings.insecureHttpOption = InsecureHttpOption.NotAllowed;
            }
            #endif
        }

        public override void InnerOnGUI(SerializedObject so) {
            var description = Translations.Settings.OptionAllowHttpRequestsDescription;
            EditorGUILayout.LabelField(description, HotReloadWindowStyles.WrapStyle);
        }
    }
}