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;
}
}
}