feat: implement dynamic knowledge graph updates and state management services
This commit is contained in:
@@ -1,13 +1,42 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user