@using Model.MemoryTester @using Services.Immortal @implements IDisposable @inject IMemoryTesterService MemoryTesterService
@if (MemoryQuestion.Name != "") {
@MemoryQuestion.Name
}
@code { [Parameter] public string Label { get; set; } = ""; [Parameter] public string Info { get; set; } = ""; [Parameter] public EventCallback OnChange { get; set; } [Parameter] public MemoryQuestionModel MemoryQuestion { get; set; } = default!; [Parameter] public bool IsSubmitted { get; set; } private string? guess = ""; private string labelId = ""; protected override void OnInitialized() { base.OnInitialized(); labelId = Label.ToLower().Replace(" ", "_") + MemoryQuestion.Id; MemoryTesterService.Subscribe(OnMemoryEvent); if (MemoryQuestion.IsRevealed) { guess = MemoryQuestion.Answer.ToString(); } OnRefresh(); } void IDisposable.Dispose() { MemoryTesterService.Unsubscribe(OnMemoryEvent); } void OnMemoryEvent(MemoryTesterEvent memoryTesterEvent) { if (memoryTesterEvent == MemoryTesterEvent.OnVerify) { OnVerify(); } if (memoryTesterEvent == MemoryTesterEvent.OnRefresh) { OnRefresh(); } } protected override void OnAfterRender(bool firstRender) { if (MemoryQuestion.IsRevealed) { guess = MemoryQuestion.Answer.ToString(); } } void OnVerify() { IsSubmitted = true; } void OnRefresh() { guess = ""; if (MemoryQuestion.IsRevealed) { guess = MemoryQuestion.Answer.ToString(); } IsSubmitted = false; } void OnGuessChanged(ChangeEventArgs changeEventArgs) { guess = changeEventArgs.Value!.ToString()!; OnChange.InvokeAsync(new AnswerEventArgs { Name = MemoryQuestion.Name, IsCorrect = int.Parse(guess) == MemoryQuestion.Answer, Guess = int.Parse(guess) }); } }