using System; using Microsoft.Extensions.DependencyInjection; using Nebula.Shared.Services; namespace Nebula.Launcher.ViewModels; public abstract class PopupViewModelBase : ViewModelBase, IDisposable { private readonly IServiceProvider _serviceProvider; public abstract string Title { get; } public abstract bool IsClosable { get; } public PopupViewModelBase() { } public PopupViewModelBase(IServiceProvider serviceProvider) : base(serviceProvider) { _serviceProvider = serviceProvider; } public void Dispose() { _serviceProvider.GetService()?.ClosePopup(this); } }