From 4ce9b77a71288bfd8cde14f7f3e6711f617054be Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 13 May 2026 22:44:37 +0200 Subject: [PATCH] Add ReceiverAuthState to manage receiver auth context Introduced the ReceiverAuthState class to encapsulate and manage the authentication state for receivers within an envelope. This class tracks the current authentication response and envelope key, provides methods to update or clear the state, and exposes a Changed event to notify UI components of state transitions, enabling reactive UI updates during the authentication flow. --- .../Services/ReceiverAuthState.cs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 receiverUI/EnvelopeGenerator.ReceiverUI.Web/EnvelopeGenerator.ReceiverUI.Web.Client/Services/ReceiverAuthState.cs 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(); + } +}