Browse Source

End session when PixiEditor closes

CPKreuz 1 year ago
parent
commit
09bb1d0453

+ 3 - 1
src/PixiEditor/Models/AnalyticsAPI/AnalyticsPeriodicReporter.cs

@@ -33,9 +33,11 @@ public class AnalyticsPeriodicReporter
         Task.Run(RunAsync);
     }
 
-    public void Stop()
+    public async Task StopAsync()
     {
         _cancellationToken.Cancel();
+
+        await _client.EndSessionAsync(SessionId).WaitAsync(TimeSpan.FromSeconds(1));
     }
 
     public void AddEvent(AnalyticEvent value)

+ 10 - 0
src/PixiEditor/ViewModels/ViewModelMain.cs

@@ -8,6 +8,7 @@ using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Extensions.CommonApi.UserPreferences;
 using PixiEditor.Helpers;
 using PixiEditor.Helpers.Collections;
+using PixiEditor.Models.AnalyticsAPI;
 using PixiEditor.Models.Commands;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.Dialogs;
@@ -191,6 +192,15 @@ internal partial class ViewModelMain : ViewModelBase, ICommandsHandler
     public async Task CloseWindow()
     {
         UserWantsToClose = await DisposeAllDocumentsWithSaveConfirmation();
+
+        if (UserWantsToClose)
+        {
+            var analytics = Services.GetService<AnalyticsPeriodicReporter>();
+            if (analytics != null)
+            {
+                await analytics.StopAsync();
+            }
+        }
     }
 
     private void ToolsSubViewModel_SelectedToolChanged(object sender, SelectedToolEventArgs e)