diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderEditorPage.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderEditorPage.razor index 8d4b992d..ad77d138 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderEditorPage.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderEditorPage.razor @@ -31,6 +31,11 @@ + @* ── Action Bar ── *@ @@ -426,6 +431,7 @@ } + EnvelopeId.HasValue && EnvelopeId.Value > 0; + bool IsBootstrapLoading => !IsEditMode && !_bootstrapApplied; // ── Lifecycle ── @@ -704,17 +711,22 @@ if (EnvelopeId.HasValue && EnvelopeId.Value > 0) _editingEnvelopeId = EnvelopeId.Value; - if (!IsEditMode && !_bootstrapApplied && !string.IsNullOrWhiteSpace(BootstrapToken)) - _pendingBootstrapToken = BootstrapToken; - if (IsEditMode && _loadedEnvelopeId != EnvelopeId) { await LoadEnvelopeForEditAsync(EnvelopeId!.Value); return; } - if (IsEditMode) + if (IsEditMode || _bootstrapApplied) return; + + if (string.IsNullOrWhiteSpace(BootstrapToken)) + { + NavigationManager.NavigateTo("/sender", replace: true); + return; + } + + _pendingBootstrapToken = BootstrapToken; } async Task TryApplyBootstrapAsync(string token) @@ -724,7 +736,7 @@ if (payload is null) { - NavigationManager.NavigateTo("/sender/editor", replace: true); + NavigationManager.NavigateTo("/sender", replace: true); return; } @@ -785,8 +797,6 @@ _pagePreviews = []; _pageCount = 0; } - - NavigationManager.NavigateTo("/sender/editor", replace: true); } protected override async Task OnAfterRenderAsync(bool firstRender) @@ -800,6 +810,15 @@ if (!OperatingSystem.IsBrowser()) return; + if (!IsEditMode && !_bootstrapApplied && !string.IsNullOrWhiteSpace(_pendingBootstrapToken)) + { + var token = _pendingBootstrapToken; + _pendingBootstrapToken = null; + await TryApplyBootstrapAsync(token); + await InvokeAsync(StateHasChanged); + return; + } + if (_saveDraftAfterBootstrap && !_isSaving) { _saveDraftAfterBootstrap = false; @@ -807,12 +826,6 @@ return; } - if (!IsEditMode && !_bootstrapApplied && !string.IsNullOrWhiteSpace(_pendingBootstrapToken)) - { - var token = _pendingBootstrapToken; - _pendingBootstrapToken = null; - await TryApplyBootstrapAsync(token); - } } async Task LoadEnvelopeForEditAsync(int envelopeId)