From fb3a27c02ffd79210468577cf29a647dad115967 Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 21 Mar 2024 08:38:59 +0800 Subject: [PATCH] update the code by following the review suggestions. --- .../Themes/Controls/Theme/ControlPanel.razor | 17 +++++--- Oqtane.Client/UI/SiteRouter.razor | 41 +++++++------------ Oqtane.Shared/Enums/ViewMode.cs | 14 ------- Oqtane.Shared/Models/UserSetting.cs | 4 +- 4 files changed, 27 insertions(+), 49 deletions(-) delete mode 100644 Oqtane.Shared/Enums/ViewMode.cs diff --git a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor index dec46b42..4f711ceb 100644 --- a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor +++ b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor @@ -114,14 +114,19 @@ if(PageState.User != null) //keep edit mode for authenticated users. { - - var viewMode = PageState.EditMode ? ViewMode.Edit.ToString() : ViewMode.View.ToString(); - var userSettings = new Dictionary + if(PageState.EditMode) { - { UserSetting.ViewMode, viewMode } - }; + var userSettings = new Dictionary + { + { UserSetting.LastViewPageId, PageState.Page.PageId.ToString() } + }; - await SettingService.UpdateUserSettingsAsync(userSettings, PageState.User.UserId); + await SettingService.UpdateUserSettingsAsync(userSettings, PageState.User.UserId); + } + else + { + await SettingService.DeleteSettingAsync(EntityNames.User, PageState.User.UserId, UserSetting.LastViewPageId); + } } // preserve other querystring parameters diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor index ba1113dd..a2b32ef1 100644 --- a/Oqtane.Client/UI/SiteRouter.razor +++ b/Oqtane.Client/UI/SiteRouter.razor @@ -14,7 +14,6 @@ @inject ILogService LogService @inject ISettingService SettingService @inject IJSRuntime JSRuntime -@inject IHttpContextAccessor HttpContextAccessor @implements IHandleAfterRender @implements IDisposable @@ -62,17 +61,6 @@ }; } - protected override async Task OnInitializedAsync() - { - var route = new Route(_absoluteUri, SiteState.Alias.Path); - var lastViewPage = HttpContextAccessor.HttpContext.Request.Cookies[UserSetting.LastViewPage] ?? string.Empty; - if (lastViewPage != route.PagePath) - { - HttpContextAccessor.HttpContext.Response.Cookies.Append(UserSetting.LastViewPage, route.PagePath); - _pageChanged = true; - } - } - public void Dispose() { NavigationManager.LocationChanged -= LocationChanged; @@ -183,19 +171,24 @@ visitorId = PageState.VisitorId; } - - if (PageState?.Page.Path != route.PagePath || _pageChanged) + bool? pageChanged = null; + if(user != null && PageState?.Page != null) + { + var userSettings = await SettingService.GetUserSettingsAsync(user.UserId); + if(userSettings.ContainsKey(UserSetting.LastViewPageId)) + { + int.TryParse(userSettings.GetValueOrDefault(UserSetting.LastViewPageId), out int lastViewPageId); + pageChanged = lastViewPageId != PageState.Page.PageId; + } + } + + if (PageState?.Page.Path != route.PagePath || pageChanged.GetValueOrDefault(false)) { editmode = false; // reset edit mode when navigating to different page - if (user != null) //keep edit mode for authenticated users. + if (user != null) { - var userSettings = new Dictionary - { - { UserSetting.ViewMode, ViewMode.View.ToString() } - }; - - await SettingService.UpdateUserSettingsAsync(userSettings, user.UserId); + await SettingService.DeleteSettingAsync(EntityNames.User, user.UserId, UserSetting.LastViewPageId); } } else @@ -208,11 +201,7 @@ //check edit mode for authenticated users. if (!editmode && user != null) { - Enum.TryParse(user.Settings.GetValueOrDefault(UserSetting.ViewMode, ViewMode.View.ToString()), true, out ViewMode viewMode); - if (viewMode == ViewMode.Edit) - { - editmode = true; - } + editmode = pageChanged.HasValue && !pageChanged.Value; } } diff --git a/Oqtane.Shared/Enums/ViewMode.cs b/Oqtane.Shared/Enums/ViewMode.cs deleted file mode 100644 index bc8e1f2f..00000000 --- a/Oqtane.Shared/Enums/ViewMode.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Oqtane.Enums -{ - public enum ViewMode - { - View, - Edit - } -} diff --git a/Oqtane.Shared/Models/UserSetting.cs b/Oqtane.Shared/Models/UserSetting.cs index 737fe6a7..9739481c 100644 --- a/Oqtane.Shared/Models/UserSetting.cs +++ b/Oqtane.Shared/Models/UserSetting.cs @@ -8,8 +8,6 @@ namespace Oqtane.Models { public class UserSetting { - public const string ViewMode = "Page:ViewMode"; - - public const string LastViewPage = "LastViewed"; + public const string LastViewPageId = "Page:LastViewed"; } }