namespace Shogi.UI.Shared.Modal { /// /// An injectible service which can be invoked to display preset modals via the razor component. /// Only one modal me be visible at a time. /// public class ModalService { public event EventHandler? ModalVisibilityChangedEvent; public ModalService() { } public bool LoginModalIsVisible { get; private set; } public bool GuestAccountDescriptionIsVisible { get; private set; } public void ShowLoginModal() { SetAllVisibilitiesToFalse(); LoginModalIsVisible = true; EmitCurrentState(); } public void ShowGuestAccountDescriptionModal() { SetAllVisibilitiesToFalse(); GuestAccountDescriptionIsVisible = true; EmitCurrentState(); } public void HideAllModals() { SetAllVisibilitiesToFalse(); EmitCurrentState(); } private void EmitCurrentState() { ModalVisibilityChangedEvent?.Invoke(this, new() { LoginModalIsVisible = LoginModalIsVisible, GuestAccountDescriptionIsVisible = GuestAccountDescriptionIsVisible }); } private void SetAllVisibilitiesToFalse() { LoginModalIsVisible = false; GuestAccountDescriptionIsVisible = false; } } }