diff --git a/receiverUI/EnvelopeGenerator.ReceiverUI.Web/EnvelopeGenerator.ReceiverUI.Web.Client/Services/ReceiverAuthState.cs b/receiverUI/EnvelopeGenerator.ReceiverUI.Web/EnvelopeGenerator.ReceiverUI.Web.Client/Services/ReceiverAuthState.cs new file mode 100644 index 00000000..01cc0984 --- /dev/null +++ b/receiverUI/EnvelopeGenerator.ReceiverUI.Web/EnvelopeGenerator.ReceiverUI.Web.Client/Services/ReceiverAuthState.cs @@ -0,0 +1,34 @@ +using EnvelopeGenerator.ReceiverUI.Web.Client.Api.Models; + +namespace EnvelopeGenerator.ReceiverUI.Web.Client.Services; + +/// +/// Holds the current receiver authentication context for the active envelope. +/// Scoped per circuit (Interactive Server) or per browser tab (Interactive WASM). +/// +/// Pages observe to re-render when the underlying +/// auth response transitions (e.g. requires_access_code -> requires_tfa +/// -> show_document). +/// +public class ReceiverAuthState +{ + private ReceiverAuthResponse? _current; + public string? EnvelopeKey { get; private set; } + public ReceiverAuthResponse? Current => _current; + + public event Action? Changed; + + public void Set(string envelopeKey, ReceiverAuthResponse? response) + { + EnvelopeKey = envelopeKey; + _current = response; + Changed?.Invoke(); + } + + public void Clear() + { + EnvelopeKey = null; + _current = null; + Changed?.Invoke(); + } +}