43 lines
1.1 KiB
C#
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();
|
|
}
|
|
}
|