namespace AuthorBuddy.Web.Services;

public class OperationState
{
    public string StatusText { get; private set; } = "Bereit";
    public bool IsBusy { get; private set; }
    public double Progress { get; private set; }
    public string ThoughtText { get; private set; } = "";

    public event Action? OnChange;

    public void SetStatus(string text, bool busy = false, double progress = 0)
    {
        StatusText = text;
        IsBusy = busy;
        Progress = progress;
        Notify();
    }

    public void SetThought(string text)
    {
        ThoughtText = text;
        Notify();
    }

    public void AppendThought(string text)
    {
        ThoughtText += text;
        Notify();
    }

    public void Reset()
    {
        StatusText = "Bereit";
        IsBusy = false;
        Progress = 0;
        ThoughtText = "";
        Notify();
    }

    private void Notify() => OnChange?.Invoke();
}
