From ef32c58638f597ee993c6eefce4ae4d9fbba3edb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Borja=20Dom=C3=ADnguez=20V=C3=A1zquez?= Date: Fri, 20 Sep 2024 09:50:41 +0200 Subject: [PATCH 1/2] Use IBasePopupViewModel --- .../Mopups.PreBaked/Interfaces/GenericViewModel.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/GenericViewModel.cs b/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/GenericViewModel.cs index de0ccb2..f5eeeda 100644 --- a/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/GenericViewModel.cs +++ b/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/GenericViewModel.cs @@ -1,8 +1,6 @@ -using Mopups.PreBaked.AbstractClasses; - -namespace Mopups.PreBaked.Interfaces +namespace Mopups.PreBaked.Interfaces { - public interface IGenericViewModel where TViewModel : BasePopupViewModel + public interface IGenericViewModel where TViewModel : IBasePopupViewModel { void SetViewModel(TViewModel viewModel); TViewModel GetViewModel(); From ab141b3a0ea074180e8f083e6325208193bda441 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Borja=20Dom=C3=ADnguez=20V=C3=A1zquez?= Date: Fri, 20 Sep 2024 09:50:41 +0200 Subject: [PATCH 2/2] Allow to use abstractions --- .../Interfaces/GenericViewModel.cs | 6 ++---- .../Interfaces/IBasePopupViewModel.cs | 8 +++++--- .../Interfaces/IPreBakedMopupService.cs | 16 +++++----------- .../Services/PreBakedMopupService.cs | 8 ++++---- 4 files changed, 16 insertions(+), 22 deletions(-) diff --git a/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/GenericViewModel.cs b/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/GenericViewModel.cs index de0ccb2..f5eeeda 100644 --- a/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/GenericViewModel.cs +++ b/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/GenericViewModel.cs @@ -1,8 +1,6 @@ -using Mopups.PreBaked.AbstractClasses; - -namespace Mopups.PreBaked.Interfaces +namespace Mopups.PreBaked.Interfaces { - public interface IGenericViewModel where TViewModel : BasePopupViewModel + public interface IGenericViewModel where TViewModel : IBasePopupViewModel { void SetViewModel(TViewModel viewModel); TViewModel GetViewModel(); diff --git a/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/IBasePopupViewModel.cs b/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/IBasePopupViewModel.cs index 0d86972..a60aba0 100644 --- a/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/IBasePopupViewModel.cs +++ b/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/IBasePopupViewModel.cs @@ -1,10 +1,12 @@ using System.ComponentModel; namespace Mopups.PreBaked.Interfaces -{ - public interface IBasePopupViewModel +{ + public interface IBasePopupViewModel { bool IsBusy { get; set; } event PropertyChangedEventHandler PropertyChanged; - } + + void RunOnAttachment(TPopupType popupPage) where TPopupType : Pages.PopupPage; + } } \ No newline at end of file diff --git a/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/IPreBakedMopupService.cs b/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/IPreBakedMopupService.cs index c919baa..8d1ff68 100644 --- a/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/IPreBakedMopupService.cs +++ b/Mopups/Mopups.Maui/Mopups.PreBaked/Interfaces/IPreBakedMopupService.cs @@ -1,25 +1,19 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; - -using Mopups.PreBaked.AbstractClasses; - -using Mopups.Pages; +using Mopups.Pages; namespace Mopups.PreBaked.Interfaces -{ - public interface IPreBakedMopupService +{ + public interface IPreBakedMopupService { TPopupPage AttachViewModel(TPopupPage popupPage, TViewModel viewModel) where TPopupPage : PopupPage, IGenericViewModel - where TViewModel : BasePopupViewModel; + where TViewModel : IBasePopupViewModel; TPopupPage CreatePopupPage() where TPopupPage : PopupPage, new(); Task ForceMinimumWaitTime(Task returnableTask, int millisecondsDelay); Task ForceMinimumWaitTime(Task returnableTask, int millisecondsDelay); void PopAsync() where TPopupType : PopupPage, new(); void PopAsync(Action exceptionActionForSafeFireAndForget) where TPopupType : PopupPage, new(); Task PushAsync(TViewModel modalViewModel) - where TViewModel : PopupViewModel + where TViewModel : IPopupViewModel, IBasePopupViewModel where TPopupPage : PopupPage, IGenericViewModel, new(); Task WrapReturnableFuncInLoader(Func action, Color loaderColour, Color loaderPopupColour, List reasonsForLoader, Color textColour, int millisecondsBetweenReasons = 2000); Task WrapReturnableFuncInLoader(Func action, Color loaderColour, Color loaderPopupColour, List reasonsForLoader, Color textColour, int millisecondsBetweenReasons = 2000) where TPopupPage : PopupPage, IGenericViewModel, new(); diff --git a/Mopups/Mopups.Maui/Mopups.PreBaked/Services/PreBakedMopupService.cs b/Mopups/Mopups.Maui/Mopups.PreBaked/Services/PreBakedMopupService.cs index c937729..bd0ec10 100644 --- a/Mopups/Mopups.Maui/Mopups.PreBaked/Services/PreBakedMopupService.cs +++ b/Mopups/Mopups.Maui/Mopups.PreBaked/Services/PreBakedMopupService.cs @@ -75,8 +75,8 @@ namespace Mopups.PreBaked.Services public TPopupPage AttachViewModel(TPopupPage popupPage, TViewModel viewModel) where TPopupPage : PopupPage, IGenericViewModel - where TViewModel : BasePopupViewModel - { + where TViewModel : IBasePopupViewModel + { popupPage.SetViewModel(viewModel); viewModel.RunOnAttachment(popupPage); return popupPage; @@ -84,8 +84,8 @@ namespace Mopups.PreBaked.Services public async Task PushAsync(TViewModel modalViewModel) where TPopupPage : PopupPage, IGenericViewModel, new() - where TViewModel : PopupViewModel - { + where TViewModel : IPopupViewModel, IBasePopupViewModel + { TPopupPage popupModal = AttachViewModel(CreatePopupPage(), modalViewModel); await s_popupNavigation.PushAsync(popupModal); return await modalViewModel.Returnable.Task;