using System;

namespace InABox.Core
{
    public class DFLayoutEmbeddedImageProperties : DFLayoutFieldProperties<byte[]>
    {
        [CheckBoxEditor]
        public bool DisableLibrary { get; set; }

        public override string FormatValue(object? value)
        {
            return value != null ? "Yes" : "";
        }

        public override object? ParseValue(object? value)
        {
            if (value is byte[])
                return value;

            if (value is string str)
            {
                if (Guid.TryParse(str, out var id))
                {
                    return Array.Empty<byte>();
                }

                try
                {
                    return Convert.FromBase64String(str);
                }
                catch (Exception e)
                {
                    return null;
                }
            }

            return null;
        }

        protected override void LoadProperties()
        {
            base.LoadProperties();
            DisableLibrary = GetProperty("DisableLibrary", false);
        }

        protected override void SaveProperties()
        {
            base.SaveProperties();
            SetProperty("DisableLibrary", DisableLibrary);
        }
    }
}