﻿// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

using System.Runtime.CompilerServices;
using System.Text.Json;
using System.Text.Json.Serialization;
using Microsoft.PowerToys.Settings.Telemetry;
using Microsoft.PowerToys.Telemetry;

namespace Microsoft.PowerToys.Settings.UI.Lib
{
    public class PowerPreviewProperties
    {
        private bool enableSvg = true;

        [JsonPropertyName("svg-previewer-toggle-setting")]
        [JsonConverter(typeof(BoolPropertyJsonConverter))]
        public bool EnableSvg
        {
            get => this.enableSvg;
            set
            {
                if (value != this.enableSvg)
                {
                    LogTelemetryEvent(value);
                    this.enableSvg = value;
                }
            }
        }

        private bool enableMd = true;

        [JsonPropertyName("md-previewer-toggle-setting")]
        [JsonConverter(typeof(BoolPropertyJsonConverter))]
        public bool EnableMd
        {
            get => this.enableMd;
            set
            {
                if (value != this.enableMd)
                {
                    LogTelemetryEvent(value);
                    this.enableMd = value;
                }
            }
        }

        public PowerPreviewProperties()
        {

        }

        public override string ToString()
        {
            return JsonSerializer.Serialize(this);
        }

        private void LogTelemetryEvent(bool value, [CallerMemberName] string propertyName = null)
        {
            var dataEvent = new SettingsEnabledEvent()
            {
                Value = value,
                Name = propertyName,
            };
            PowerToysTelemetry.Log.WriteEvent(dataEvent);
        }
    }
}
