From d3e6177a2b92685a8e79e87acf128261a6791fcb Mon Sep 17 00:00:00 2001 From: sbwalker Date: Thu, 21 Mar 2024 18:44:16 -0400 Subject: [PATCH] refactoring of #4027 --- .../Themes/Controls/Theme/ControlPanel.razor | 18 ++--- Oqtane.Client/UI/SiteRouter.razor | 67 ++++++------------- Oqtane.Shared/Models/UserSetting.cs | 13 ---- 3 files changed, 26 insertions(+), 72 deletions(-) delete mode 100644 Oqtane.Shared/Models/UserSetting.cs diff --git a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor index 4f711ceb..fad09a2b 100644 --- a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor +++ b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor @@ -112,21 +112,11 @@ { PageState.EditMode = !editMode; - if(PageState.User != null) //keep edit mode for authenticated users. + if (PageState.User != null) { - if(PageState.EditMode) - { - var userSettings = new Dictionary - { - { UserSetting.LastViewPageId, PageState.Page.PageId.ToString() } - }; - - await SettingService.UpdateUserSettingsAsync(userSettings, PageState.User.UserId); - } - else - { - await SettingService.DeleteSettingAsync(EntityNames.User, PageState.User.UserId, UserSetting.LastViewPageId); - } + // preserve edit mode for authenticated users + var userSettings = new Dictionary { { "CP-editmode", (PageState.EditMode) ? PageState.Page.PageId.ToString() : "-1" } }; + await SettingService.UpdateUserSettingsAsync(userSettings, PageState.User.UserId); } // preserve other querystring parameters diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor index 6d5e9f27..d70f111f 100644 --- a/Oqtane.Client/UI/SiteRouter.razor +++ b/Oqtane.Client/UI/SiteRouter.razor @@ -148,18 +148,11 @@ var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); if (authState.User.Identity.IsAuthenticated && authState.User.Claims.Any(item => item.Type == "sitekey" && item.Value == SiteState.Alias.SiteKey)) { - if (PageState == null || PageState.Refresh || refresh || PageState.Alias.SiteId != SiteState.Alias.SiteId) + // get user + user = await UserService.GetUserAsync(authState.User.Identity.Name, SiteState.Alias.SiteId); + if (user != null) { - // get user - user = await UserService.GetUserAsync(authState.User.Identity.Name, SiteState.Alias.SiteId); - if (user != null) - { - user.IsAuthenticated = authState.User.Identity.IsAuthenticated; - } - } - else - { - user = PageState.User; + user.IsAuthenticated = authState.User.Identity.IsAuthenticated; } } @@ -170,40 +163,6 @@ visitorId = PageState.VisitorId; } - 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) - { - await SettingService.DeleteSettingAsync(EntityNames.User, user.UserId, UserSetting.LastViewPageId); - } - } - else - { - if (querystring.ContainsKey("edit") && querystring["edit"] == "true") - { - editmode = true; // querystring can set edit mode - } - - //check edit mode for authenticated users. - if (!editmode && user != null) - { - editmode = pageChanged.HasValue && !pageChanged.Value; - } - } - // process any sync events var sync = await SyncService.GetSyncEventsAsync(lastsyncdate); lastsyncdate = sync.SyncDate; @@ -298,6 +257,24 @@ // check if user is authorized to view page if (UserSecurity.IsAuthorized(user, PermissionNames.View, page.PermissionList) && (Utilities.IsPageModuleVisible(page.EffectiveDate, page.ExpiryDate) || UserSecurity.IsAuthorized(user, PermissionNames.Edit, page.PermissionList))) { + // edit mode + if (user != null) + { + if (querystring.ContainsKey("editmode") && querystring["edit"] == "true") + { + editmode = true; + } + else + { + editmode = (page.PageId == ((user.Settings.ContainsKey("CP-editmode")) ? int.Parse(user.Settings["CP-editmode"]) : -1)); + if (!editmode) + { + var userSettings = new Dictionary { { "CP-editmode", "-1" } }; + await SettingService.UpdateUserSettingsAsync(userSettings, user.UserId); + } + } + } + // load additional metadata for current page page = ProcessPage(page, site, user, SiteState.Alias); diff --git a/Oqtane.Shared/Models/UserSetting.cs b/Oqtane.Shared/Models/UserSetting.cs deleted file mode 100644 index 9739481c..00000000 --- a/Oqtane.Shared/Models/UserSetting.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Oqtane.Models -{ - public class UserSetting - { - public const string LastViewPageId = "Page:LastViewed"; - } -}