diff --git a/app/Desktop/Main/MainWindow.axaml b/app/Desktop/Main/MainWindow.axaml index 6f29aff..ed343ee 100644 --- a/app/Desktop/Main/MainWindow.axaml +++ b/app/Desktop/Main/MainWindow.axaml @@ -9,7 +9,8 @@ Icon="avares://DiscordHistoryTracker/Resources/icon.ico" Width="800" Height="500" MinWidth="480" MinHeight="240" - WindowStartupLocation="CenterScreen"> + WindowStartupLocation="CenterScreen" + Closed="OnClosed"> diff --git a/app/Desktop/Main/MainWindow.axaml.cs b/app/Desktop/Main/MainWindow.axaml.cs index 546e630..f8d6a9f 100644 --- a/app/Desktop/Main/MainWindow.axaml.cs +++ b/app/Desktop/Main/MainWindow.axaml.cs @@ -1,3 +1,4 @@ +using System; using System.Diagnostics.CodeAnalysis; using Avalonia; using Avalonia.Controls; @@ -24,5 +25,11 @@ namespace DHT.Desktop.Main { this.AttachDevTools(); #endif } + + public void OnClosed(object? sender, EventArgs e) { + if (DataContext is IDisposable disposable) { + disposable.Dispose(); + } + } } } diff --git a/app/Desktop/Main/MainWindowModel.cs b/app/Desktop/Main/MainWindowModel.cs index 2fb89b1..b933659 100644 --- a/app/Desktop/Main/MainWindowModel.cs +++ b/app/Desktop/Main/MainWindowModel.cs @@ -10,7 +10,7 @@ using DHT.Server.Database; using DHT.Utils.Models; namespace DHT.Desktop.Main { - sealed class MainWindowModel : BaseModel { + sealed class MainWindowModel : BaseModel, IDisposable { private const string DefaultTitle = "Discord History Tracker"; public string Title { get; private set; } = DefaultTitle; @@ -104,5 +104,10 @@ namespace DHT.Desktop.Main { private void MainContentScreenModelOnDatabaseClosed(object? sender, EventArgs e) { WelcomeScreenModel.CloseDatabase(); } + + public void Dispose() { + MainContentScreenModel?.Dispose(); + db?.Dispose(); + } } }