From 2b32f316ee0e7ba1162b797239e523875435bc3d Mon Sep 17 00:00:00 2001 From: Ben Date: Sat, 18 May 2024 21:55:37 +0800 Subject: [PATCH] Fix #3885: only re-render the component when message changed. --- .../Modules/Controls/ModuleMessage.razor | 33 ++++++------- Oqtane.Client/Modules/ModuleBase.cs | 1 - Oqtane.Client/UI/RenderModeBoundary.razor | 46 ++++++++----------- 3 files changed, 37 insertions(+), 43 deletions(-) diff --git a/Oqtane.Client/Modules/Controls/ModuleMessage.razor b/Oqtane.Client/Modules/Controls/ModuleMessage.razor index abaa8b2d..5a14bd3f 100644 --- a/Oqtane.Client/Modules/Controls/ModuleMessage.razor +++ b/Oqtane.Client/Modules/Controls/ModuleMessage.razor @@ -12,12 +12,13 @@ { View Details } - + } } @code { + private string _message = string.Empty; private string _classname = string.Empty; private string _formname = "ModuleMessageForm"; @@ -27,15 +28,8 @@ [Parameter] public MessageType Type { get; set; } - public void RefreshMessage(string message, MessageType type) - { - Message = message; - Type = type; - - UpdateClassName(); - - StateHasChanged(); - } + [Parameter] + public RenderModeBoundary Parent { get; set; } protected override void OnInitialized() { @@ -47,12 +41,8 @@ protected override void OnParametersSet() { - UpdateClassName(); - } - - private void UpdateClassName() - { - if (!string.IsNullOrEmpty(Message)) + _message = Message; + if (!string.IsNullOrEmpty(_message)) { _classname = GetMessageType(Type); } @@ -79,4 +69,15 @@ return classname; } + private void CloseMessage(MouseEventArgs e) + { + if(Parent != null) + { + Parent.DismissMessage(); + } + else + { + NavigationManager.NavigateTo(NavigationManager.Uri); + } + } } diff --git a/Oqtane.Client/Modules/ModuleBase.cs b/Oqtane.Client/Modules/ModuleBase.cs index 4c5bb670..1731e22d 100644 --- a/Oqtane.Client/Modules/ModuleBase.cs +++ b/Oqtane.Client/Modules/ModuleBase.cs @@ -278,7 +278,6 @@ namespace Oqtane.Modules public void AddModuleMessage(string message, MessageType type, string position) { - ClearModuleMessage(); RenderModeBoundary.AddModuleMessage(message, type, position); } diff --git a/Oqtane.Client/UI/RenderModeBoundary.razor b/Oqtane.Client/UI/RenderModeBoundary.razor index b1f56793..2c451f29 100644 --- a/Oqtane.Client/UI/RenderModeBoundary.razor +++ b/Oqtane.Client/UI/RenderModeBoundary.razor @@ -10,13 +10,19 @@ { @if (ModuleType != null) { - + @if (!string.IsNullOrEmpty(_messageContent) && _messagePosition == "top") + { + + } @DynamicComponent @if (_progressIndicator) {
} - + @if (!string.IsNullOrEmpty(_messageContent) && _messagePosition == "bottom") + { + + } } } else @@ -41,8 +47,6 @@ private string _messagePosition; private bool _progressIndicator = false; private string _error; - private ModuleMessage moduleMessageTop; - private ModuleMessage moduleMessageBottom; [Parameter] public SiteState SiteState { get; set; } @@ -103,12 +107,17 @@ public void AddModuleMessage(string message, MessageType type, string position) { - _messageContent = message; - _messageType = type; - _messagePosition = position; - _progressIndicator = false; + if(message != _messageContent + || type != _messageType + || position != _messagePosition) + { + _messageContent = message; + _messageType = type; + _messagePosition = position; + _progressIndicator = false; - Refresh(); + StateHasChanged(); + } } public void ShowProgressIndicator() @@ -123,25 +132,10 @@ StateHasChanged(); } - private void DismissMessage() + public void DismissMessage() { _messageContent = ""; - } - - private void Refresh() - { - var updateTop = string.IsNullOrEmpty(_messageContent) || _messagePosition == "top"; - var updateBottom = string.IsNullOrEmpty(_messageContent) || _messagePosition == "bottom"; - - if (updateTop && moduleMessageTop != null) - { - moduleMessageTop.RefreshMessage(_messageContent, _messageType); - } - - if (updateBottom && moduleMessageBottom != null) - { - moduleMessageBottom.RefreshMessage(_messageContent, _messageType); - } + StateHasChanged(); } protected override async Task OnErrorAsync(Exception exception)