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? 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(); } }