Files
Nexus.Reader/src/NexusReader.UI.Shared/Services/QuizStateService.cs
T

43 lines
1.1 KiB
C#

using NexusReader.Application.Queries.Quiz;
namespace NexusReader.UI.Shared.Services;
public sealed class QuizStateService : IQuizStateService
{
public string? CurrentQuizBlockId { get; private set; }
public QuizDto? CurrentQuiz { get; private set; }
public bool IsHydrating { get; private set; }
public bool HasNewQuiz { get; private set; }
public event Action<string>? OnQuizRequested;
public event Action? OnQuizUpdated;
public void RequestQuiz(string blockId)
{
CurrentQuizBlockId = blockId;
OnQuizRequested?.Invoke(blockId);
}
public void SetQuiz(string blockId, QuizDto quiz)
{
CurrentQuizBlockId = blockId;
CurrentQuiz = quiz;
IsHydrating = false;
HasNewQuiz = true;
OnQuizUpdated?.Invoke();
}
public void SetHydrating(bool hydrating)
{
IsHydrating = hydrating;
OnQuizUpdated?.Invoke();
}
public void MarkQuizAsSeen()
{
if (!HasNewQuiz) return;
HasNewQuiz = false;
OnQuizUpdated?.Invoke();
}
}