Adding Telemetry Events for svg and markdown enable/disable (#2814)

* Raising Telemetry events when svg and markdown preview pane is turned off

* Properly serializing Bool property.  This allows us to be backwards compatible with .17 settings but interact with the properties as boolean elements, and fire events on property changed notification
This commit is contained in:
ryanbodrug-microsoft
2020-05-08 16:12:37 -07:00
committed by GitHub
parent e654999fdf
commit d329406eb8
6 changed files with 79 additions and 16 deletions

View File

@@ -2,28 +2,68 @@
// 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
{
[JsonPropertyName("svg-previewer-toggle-setting")]
public BoolProperty EnableSvg { get; set; }
{
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")]
public BoolProperty EnableMd { get; set; }
[JsonConverter(typeof(BoolPropertyJsonConverter))]
public bool EnableMd
{
get => this.enableMd;
set
{
if (value != this.enableMd)
{
LogTelemetryEvent(value);
this.enableMd = value;
}
}
}
public PowerPreviewProperties()
{
EnableSvg = new BoolProperty();
EnableMd = new BoolProperty();
}
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);
}
}
}