Skip to content

Added App Center tracking on startup #7607

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/Files/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,13 @@ private static async Task StartAppCenter()

private static async Task InitializeAppComponentsAsync()
{
var userSettingsService = Ioc.Default.GetRequiredService<IUserSettingsService>();

// Start off a list of tasks we need to run before we can continue startup
await Task.Run(async () =>
{
userSettingsService.ReportToAppCenter();

await Task.WhenAll(
StartAppCenter(),
DrivesManager.EnumerateDrivesAsync(),
Expand Down
1 change: 1 addition & 0 deletions src/Files/Files.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,7 @@
<Compile Include="Models\JsonSettings\Implementation\DefaultSettingsSerializer.cs" />
<Compile Include="Models\JsonSettings\ISettingsSerializer.cs" />
<Compile Include="Services\IAppearanceSettingsService.cs" />
<Compile Include="Services\IBaseSettingsService.cs" />
<Compile Include="Services\IBundlesSettingsService.cs" />
<Compile Include="Services\IFileTagsSettingsService.cs" />
<Compile Include="Services\ILayoutSettingsService.cs" />
Expand Down
2 changes: 1 addition & 1 deletion src/Files/Services/IAppearanceSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Files.Services
{
public interface IAppearanceSettingsService : INotifyPropertyChanged
public interface IAppearanceSettingsService : IBaseSettingsService, INotifyPropertyChanged
{
/// <summary>
/// Gets or sets a value indicating whether or not to move overflow menu items into a sub menu.
Expand Down
7 changes: 7 additions & 0 deletions src/Files/Services/IBaseSettingsService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Files.Services
{
public interface IBaseSettingsService
{
void ReportToAppCenter();
}
}
2 changes: 1 addition & 1 deletion src/Files/Services/IBundlesSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace Files.Services
{
public interface IBundlesSettingsService
public interface IBundlesSettingsService : IBaseSettingsService
{
event EventHandler OnSettingImportedEvent;

Expand Down
2 changes: 1 addition & 1 deletion src/Files/Services/IFileTagsSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Files.Services
{
public interface IFileTagsSettingsService
public interface IFileTagsSettingsService : IBaseSettingsService
{
event EventHandler OnSettingImportedEvent;

Expand Down
2 changes: 1 addition & 1 deletion src/Files/Services/ILayoutSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace Files.Services
{
public interface ILayoutSettingsService : INotifyPropertyChanged
public interface ILayoutSettingsService : IBaseSettingsService, INotifyPropertyChanged
{
/// <summary>
/// Gets or sets a value indicating whether or not the date column should be visible.
Expand Down
2 changes: 1 addition & 1 deletion src/Files/Services/IMultitaskingSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Files.Services
{
public interface IMultitaskingSettingsService : INotifyPropertyChanged
public interface IMultitaskingSettingsService : IBaseSettingsService, INotifyPropertyChanged
{
/// <summary>
/// Gets or sets a value indicating whether or not to enable the vertical tab flyout.
Expand Down
2 changes: 1 addition & 1 deletion src/Files/Services/IPreferencesSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace Files.Services
{
public interface IPreferencesSettingsService : INotifyPropertyChanged
public interface IPreferencesSettingsService : IBaseSettingsService, INotifyPropertyChanged
{
/// <summary>
/// Gets or sets a value indicating whether or not to show the delete confirmation dialog when deleting items.
Expand Down
2 changes: 1 addition & 1 deletion src/Files/Services/IPreviewPaneSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Files.Services
{
public interface IPreviewPaneSettingsService : INotifyPropertyChanged
public interface IPreviewPaneSettingsService : IBaseSettingsService, INotifyPropertyChanged
{
/// <summary>
/// Gets or sets a value indicating the default volume on media preview.
Expand Down
2 changes: 1 addition & 1 deletion src/Files/Services/IUserSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Files.Services
{
public interface IUserSettingsService
public interface IUserSettingsService : IBaseSettingsService
{
event EventHandler<SettingChangedEventArgs> OnSettingChangedEvent;

Expand Down
2 changes: 1 addition & 1 deletion src/Files/Services/IWidgetsSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Files.Services
{
public interface IWidgetsSettingsService : INotifyPropertyChanged
public interface IWidgetsSettingsService : IBaseSettingsService, INotifyPropertyChanged
{
/// <summary>
/// Gets or sets a value indicating whether or not the library cards widget should be visible.
Expand Down
48 changes: 30 additions & 18 deletions src/Files/Services/Implementation/AppearanceSettingsService.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Files.Models.JsonSettings;
using Microsoft.AppCenter.Analytics;
using System;

namespace Files.Services.Implementation
Expand All @@ -11,24 +12,6 @@ public AppearanceSettingsService(ISettingsSharingContext settingsSharingContext)
this.RegisterSettingsContext(settingsSharingContext);
}

public override void RaiseOnSettingChangedEvent(object sender, EventArguments.SettingChangedEventArgs e)
{
switch (e.settingName)
{
case nameof(MoveOverflowMenuItemsToSubMenu):
case nameof(ShowFavoritesSection):
case nameof(ShowLibrarySection):
case nameof(ShowCloudDrivesSection):
case nameof(ShowNetworkDrivesSection):
case nameof(ShowWslSection):
case nameof(PinRecycleBinToSidebar):
Microsoft.AppCenter.Analytics.Analytics.TrackEvent($"{e.settingName} {e.newValue}");
break;
}

base.RaiseOnSettingChangedEvent(sender, e);
}

#region Internal Settings

public double SidebarWidth
Expand Down Expand Up @@ -92,5 +75,34 @@ public bool MoveOverflowMenuItemsToSubMenu
get => Get(true);
set => Set(value);
}

public override void RaiseOnSettingChangedEvent(object sender, EventArguments.SettingChangedEventArgs e)
{
switch (e.settingName)
{
case nameof(MoveOverflowMenuItemsToSubMenu):
case nameof(ShowFavoritesSection):
case nameof(ShowLibrarySection):
case nameof(ShowCloudDrivesSection):
case nameof(ShowNetworkDrivesSection):
case nameof(ShowWslSection):
case nameof(PinRecycleBinToSidebar):
Analytics.TrackEvent($"{e.settingName} {e.newValue}");
break;
}

base.RaiseOnSettingChangedEvent(sender, e);
}

public void ReportToAppCenter()
{
Analytics.TrackEvent($"{nameof(MoveOverflowMenuItemsToSubMenu)}, {MoveOverflowMenuItemsToSubMenu}");
Analytics.TrackEvent($"{nameof(ShowFavoritesSection)}, {ShowFavoritesSection}");
Analytics.TrackEvent($"{nameof(ShowLibrarySection)}, {ShowLibrarySection}");
Analytics.TrackEvent($"{nameof(ShowCloudDrivesSection)}, {ShowCloudDrivesSection}");
Analytics.TrackEvent($"{nameof(ShowNetworkDrivesSection)}, {ShowNetworkDrivesSection}");
Analytics.TrackEvent($"{nameof(ShowWslSection)}, {ShowWslSection}");
Analytics.TrackEvent($"{nameof(PinRecycleBinToSidebar)}, {PinRecycleBinToSidebar}");
}
}
}
4 changes: 4 additions & 0 deletions src/Files/Services/Implementation/BundlesSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,9 @@ public override object ExportSettings()
// Return string in Json format
return jsonSettingsSerializer.SerializeToJson(SavedBundles);
}

public void ReportToAppCenter()
{
}
}
}
4 changes: 4 additions & 0 deletions src/Files/Services/Implementation/FileTagsSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,5 +82,9 @@ public override object ExportSettings()
// Return string in Json format
return jsonSettingsSerializer.SerializeToJson(FileTagList);
}

public void ReportToAppCenter()
{
}
}
}
4 changes: 4 additions & 0 deletions src/Files/Services/Implementation/LayoutSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,5 +70,9 @@ public GroupOption DefaultDirectoryGroupOption
get => (GroupOption)Get((long)GroupOption.None);
set => Set((long)value);
}

public void ReportToAppCenter()
{
}
}
}
36 changes: 22 additions & 14 deletions src/Files/Services/Implementation/MultitaskingSettingsService.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Files.Models.JsonSettings;
using Microsoft.AppCenter.Analytics;

namespace Files.Services.Implementation
{
Expand All @@ -10,20 +11,6 @@ public MultitaskingSettingsService(ISettingsSharingContext settingsSharingContex
this.RegisterSettingsContext(settingsSharingContext);
}

public override void RaiseOnSettingChangedEvent(object sender, EventArguments.SettingChangedEventArgs e)
{
switch (e.settingName)
{
case nameof(IsVerticalTabFlyoutEnabled):
case nameof(IsDualPaneEnabled):
case nameof(AlwaysOpenDualPaneInNewTab):
Microsoft.AppCenter.Analytics.Analytics.TrackEvent($"{e.settingName} {e.newValue}");
break;
}

base.RaiseOnSettingChangedEvent(sender, e);
}

public bool IsVerticalTabFlyoutEnabled
{
get => Get(true);
Expand All @@ -41,5 +28,26 @@ public bool AlwaysOpenDualPaneInNewTab
get => Get(false);
set => Set(value);
}

public override void RaiseOnSettingChangedEvent(object sender, EventArguments.SettingChangedEventArgs e)
{
switch (e.settingName)
{
case nameof(IsVerticalTabFlyoutEnabled):
case nameof(IsDualPaneEnabled):
case nameof(AlwaysOpenDualPaneInNewTab):
Analytics.TrackEvent($"{e.settingName} {e.newValue}");
break;
}

base.RaiseOnSettingChangedEvent(sender, e);
}

public void ReportToAppCenter()
{
Analytics.TrackEvent($"{nameof(IsVerticalTabFlyoutEnabled)}, {IsVerticalTabFlyoutEnabled}");
Analytics.TrackEvent($"{nameof(IsDualPaneEnabled)}, {IsDualPaneEnabled}");
Analytics.TrackEvent($"{nameof(AlwaysOpenDualPaneInNewTab)}, {AlwaysOpenDualPaneInNewTab}");
}
}
}
78 changes: 50 additions & 28 deletions src/Files/Services/Implementation/PreferencesSettingsService.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Files.Models.JsonSettings;
using Microsoft.AppCenter.Analytics;
using System.Collections.Generic;

namespace Files.Services.Implementation
Expand All @@ -11,34 +12,6 @@ public PreferencesSettingsService(ISettingsSharingContext settingsSharingContext
this.RegisterSettingsContext(settingsSharingContext);
}

public override void RaiseOnSettingChangedEvent(object sender, EventArguments.SettingChangedEventArgs e)
{
switch (e.settingName)
{
case nameof(ShowConfirmDeleteDialog):
case nameof(OpenFoldersInNewTab):
case nameof(ShowFileExtensions):
case nameof(AreHiddenItemsVisible):
case nameof(AreSystemItemsHidden):
case nameof(ListAndSortDirectoriesAlongsideFiles):
case nameof(OpenFilesWithOneClick):
case nameof(OpenFoldersWithOneClick):
case nameof(SearchUnindexedItems):
case nameof(AreLayoutPreferencesPerFolder):
case nameof(AdaptiveLayoutEnabled):
case nameof(AreFileTagsEnabled):
case nameof(ShowFolderSize):
case nameof(OpenSpecificPageOnStartup):
case nameof(ContinueLastSessionOnStartUp):
case nameof(OpenNewTabOnStartup):
case nameof(AlwaysOpenNewInstance):
Microsoft.AppCenter.Analytics.Analytics.TrackEvent($"{e.settingName} {e.newValue}");
break;
}

base.RaiseOnSettingChangedEvent(sender, e);
}

public bool ShowConfirmDeleteDialog
{
get => Get(true);
Expand Down Expand Up @@ -158,5 +131,54 @@ public List<string> LastSessionTabList
get => Get<List<string>>(null);
set => Set(value);
}

public override void RaiseOnSettingChangedEvent(object sender, EventArguments.SettingChangedEventArgs e)
{
switch (e.settingName)
{
case nameof(ShowConfirmDeleteDialog):
case nameof(OpenFoldersInNewTab):
case nameof(ShowFileExtensions):
case nameof(AreHiddenItemsVisible):
case nameof(AreSystemItemsHidden):
case nameof(ListAndSortDirectoriesAlongsideFiles):
case nameof(OpenFilesWithOneClick):
case nameof(OpenFoldersWithOneClick):
case nameof(SearchUnindexedItems):
case nameof(AreLayoutPreferencesPerFolder):
case nameof(AdaptiveLayoutEnabled):
case nameof(AreFileTagsEnabled):
case nameof(ShowFolderSize):
case nameof(OpenSpecificPageOnStartup):
case nameof(ContinueLastSessionOnStartUp):
case nameof(OpenNewTabOnStartup):
case nameof(AlwaysOpenNewInstance):
Analytics.TrackEvent($"{e.settingName} {e.newValue}");
break;
}

base.RaiseOnSettingChangedEvent(sender, e);
}

public void ReportToAppCenter()
{
Analytics.TrackEvent($"{nameof(ShowConfirmDeleteDialog)}, {ShowConfirmDeleteDialog}");
Analytics.TrackEvent($"{nameof(OpenFoldersInNewTab)}, {OpenFoldersInNewTab}");
Analytics.TrackEvent($"{nameof(ShowFileExtensions)}, {ShowFileExtensions}");
Analytics.TrackEvent($"{nameof(AreHiddenItemsVisible)}, {AreHiddenItemsVisible}");
Analytics.TrackEvent($"{nameof(AreSystemItemsHidden)}, {AreSystemItemsHidden}");
Analytics.TrackEvent($"{nameof(ListAndSortDirectoriesAlongsideFiles)}, {ListAndSortDirectoriesAlongsideFiles}");
Analytics.TrackEvent($"{nameof(OpenFilesWithOneClick)}, {OpenFilesWithOneClick}");
Analytics.TrackEvent($"{nameof(OpenFoldersWithOneClick)}, {OpenFoldersWithOneClick}");
Analytics.TrackEvent($"{nameof(SearchUnindexedItems)}, {SearchUnindexedItems}");
Analytics.TrackEvent($"{nameof(AreLayoutPreferencesPerFolder)}, {AreLayoutPreferencesPerFolder}");
Analytics.TrackEvent($"{nameof(AdaptiveLayoutEnabled)}, {AdaptiveLayoutEnabled}");
Analytics.TrackEvent($"{nameof(AreFileTagsEnabled)}, {AreFileTagsEnabled}");
Analytics.TrackEvent($"{nameof(ShowFolderSize)}, {ShowFolderSize}");
Analytics.TrackEvent($"{nameof(OpenSpecificPageOnStartup)}, {OpenSpecificPageOnStartup}");
Analytics.TrackEvent($"{nameof(ContinueLastSessionOnStartUp)}, {ContinueLastSessionOnStartUp}");
Analytics.TrackEvent($"{nameof(OpenNewTabOnStartup)}, {OpenNewTabOnStartup}");
Analytics.TrackEvent($"{nameof(AlwaysOpenNewInstance)}, {AlwaysOpenNewInstance}");
}
}
}
Loading