From a02cfea6c9f2be548374391a981ff7c468d3ffec Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Tue, 5 May 2020 09:15:36 -0400 Subject: [PATCH] improve performance of alias handling and allow aliases to be an unlimited number of subfolders in depth --- .../Templates/External/Client/Edit.razor | 2 +- .../Templates/External/Client/Index.razor | 2 +- .../Client/Services/[Module]Service.cs | 20 +++---- .../Oqtane.Client/Modules/[Module]/Edit.razor | 2 +- .../Modules/[Module]/Index.razor | 2 +- .../[Module]/Services/[Module]Service.cs | 20 +++---- Oqtane.Client/Modules/Admin/Site/Index.razor | 6 +- Oqtane.Client/Modules/Admin/Sites/Edit.razor | 20 ++++--- Oqtane.Client/Modules/Admin/Sites/Index.razor | 3 +- Oqtane.Client/Modules/HtmlText/Edit.razor | 6 +- Oqtane.Client/Modules/HtmlText/Index.razor | 2 +- .../HtmlText/Services/HtmlTextService.cs | 34 +++-------- Oqtane.Client/Modules/ModuleBase.cs | 2 +- .../IdentityAuthenticationStateProvider.cs | 3 +- Oqtane.Client/Services/AliasService.cs | 40 +++---------- Oqtane.Client/Services/FileService.cs | 21 +++---- Oqtane.Client/Services/FolderService.cs | 17 +++--- Oqtane.Client/Services/InstallationService.cs | 12 +--- .../Services/Interfaces/ISiteService.cs | 12 ++-- .../Services/Interfaces/IUserService.cs | 2 - Oqtane.Client/Services/JobLogService.cs | 23 ++------ Oqtane.Client/Services/JobService.cs | 28 +++------ Oqtane.Client/Services/LogService.cs | 12 ++-- .../Services/ModuleDefinitionService.cs | 18 ++---- Oqtane.Client/Services/ModuleService.cs | 19 ++----- Oqtane.Client/Services/NotificationService.cs | 18 ++---- Oqtane.Client/Services/PackageService.cs | 20 +------ Oqtane.Client/Services/PageModuleService.cs | 23 +++----- Oqtane.Client/Services/PageService.cs | 26 ++++----- Oqtane.Client/Services/ProfileService.cs | 21 +++---- Oqtane.Client/Services/RoleService.cs | 18 ++---- Oqtane.Client/Services/ServiceBase.cs | 41 +++++++------ Oqtane.Client/Services/SettingService.cs | 24 +++----- Oqtane.Client/Services/SiteService.cs | 31 +++++----- Oqtane.Client/Services/SiteTemplateService.cs | 18 +----- Oqtane.Client/Services/SqlService.cs | 20 +------ Oqtane.Client/Services/SystemService.cs | 18 +----- Oqtane.Client/Services/TenantService.cs | 24 ++------ Oqtane.Client/Services/ThemeService.cs | 12 +--- Oqtane.Client/Services/UserRoleService.cs | 21 +++---- Oqtane.Client/Services/UserService.cs | 15 +---- Oqtane.Client/Themes/ThemeControlBase.cs | 2 +- Oqtane.Client/UI/SiteRouter.razor | 57 ++++++++----------- Oqtane.Client/UI/ThemeBuilder.razor | 6 +- Oqtane.Server/Controllers/AliasController.cs | 35 ++++++++---- Oqtane.Server/Controllers/PageController.cs | 14 +++-- .../Controllers/PageModuleController.cs | 12 ++-- Oqtane.Server/Controllers/SiteController.cs | 2 +- Oqtane.Server/Controllers/UserController.cs | 21 ++++--- .../Controllers/UserRoleController.cs | 10 ++-- .../Infrastructure/Interfaces/ISyncManager.cs | 4 +- Oqtane.Server/Infrastructure/SyncManager.cs | 27 ++------- Oqtane.Server/Repository/TenantResolver.cs | 31 ++-------- Oqtane.Shared/Shared/Utilities.cs | 7 ++- 54 files changed, 320 insertions(+), 586 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/External/Client/Edit.razor b/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/External/Client/Edit.razor index d23ab2e0..84e83aae 100644 --- a/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/External/Client/Edit.razor +++ b/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/External/Client/Edit.razor @@ -43,7 +43,7 @@ { try { - [Module]Service = new [Module]Service(http, sitestate, NavigationManager); + [Module]Service = new [Module]Service(http, sitestate); if (PageState.Action == "Edit") { _id = Int32.Parse(PageState.QueryString["id"]); diff --git a/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/External/Client/Index.razor b/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/External/Client/Index.razor index 15d660be..78e7c079 100644 --- a/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/External/Client/Index.razor +++ b/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/External/Client/Index.razor @@ -78,7 +78,7 @@ else { try { - [Module]Service = new [Module]Service(http, sitestate, NavigationManager); + [Module]Service = new [Module]Service(http, sitestate); _[Module]s = await [Module]Service.Get[Module]sAsync(ModuleState.ModuleId); } catch (Exception ex) diff --git a/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/External/Client/Services/[Module]Service.cs b/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/External/Client/Services/[Module]Service.cs index 5e559c3b..f95c41b9 100644 --- a/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/External/Client/Services/[Module]Service.cs +++ b/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/External/Client/Services/[Module]Service.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks; -using Microsoft.AspNetCore.Components; using Oqtane.Modules; using Oqtane.Services; using Oqtane.Shared; @@ -12,44 +11,39 @@ namespace [Owner].[Module]s.Services { public class [Module]Service : ServiceBase, I[Module]Service, IService { - private readonly NavigationManager _navigationManager; private readonly SiteState _siteState; - public [Module]Service(HttpClient http, SiteState siteState, NavigationManager navigationManager) : base(http) + public [Module]Service(HttpClient http, SiteState siteState) : base(http) { _siteState = siteState; - _navigationManager = navigationManager; } - private string Apiurl - { - get { return CreateApiUrl(_siteState.Alias, _navigationManager.Uri, "[Module]"); } - } + private string Apiurl=> CreateApiUrl(_siteState.Alias, "[Module]"); public async Task> Get[Module]sAsync(int ModuleId) { - List<[Module]> [Module]s = await GetJsonAsync>(Apiurl + "?moduleid=" + ModuleId.ToString()); + List<[Module]> [Module]s = await GetJsonAsync>($"{Apiurl}?moduleid={ModuleId}"); return [Module]s.OrderBy(item => item.Name).ToList(); } public async Task<[Module]> Get[Module]Async(int [Module]Id) { - return await GetJsonAsync<[Module]>(Apiurl + "/" + [Module]Id.ToString()); + return await GetJsonAsync<[Module]>($"{Apiurl}/{[Module]Id}"); } public async Task<[Module]> Add[Module]Async([Module] [Module]) { - return await PostJsonAsync<[Module]>(Apiurl + "?entityid=" + [Module].ModuleId, [Module]); + return await PostJsonAsync<[Module]>($"{Apiurl}?entityid={[Module].ModuleId}", [Module]); } public async Task<[Module]> Update[Module]Async([Module] [Module]) { - return await PutJsonAsync<[Module]>(Apiurl + "/" + [Module].[Module]Id + "?entityid=" + [Module].ModuleId, [Module]); + return await PutJsonAsync<[Module]>($"{Apiurl}/{[Module].[Module]Id}?entityid={[Module].ModuleId}", [Module]); } public async Task Delete[Module]Async(int [Module]Id) { - await DeleteAsync(Apiurl + "/" + [Module]Id.ToString()); + await DeleteAsync($"{Apiurl}/{[Module]Id}"); } } } diff --git a/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/Internal/Oqtane.Client/Modules/[Module]/Edit.razor b/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/Internal/Oqtane.Client/Modules/[Module]/Edit.razor index d23ab2e0..84e83aae 100644 --- a/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/Internal/Oqtane.Client/Modules/[Module]/Edit.razor +++ b/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/Internal/Oqtane.Client/Modules/[Module]/Edit.razor @@ -43,7 +43,7 @@ { try { - [Module]Service = new [Module]Service(http, sitestate, NavigationManager); + [Module]Service = new [Module]Service(http, sitestate); if (PageState.Action == "Edit") { _id = Int32.Parse(PageState.QueryString["id"]); diff --git a/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/Internal/Oqtane.Client/Modules/[Module]/Index.razor b/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/Internal/Oqtane.Client/Modules/[Module]/Index.razor index 2c9f1764..fdb11b98 100644 --- a/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/Internal/Oqtane.Client/Modules/[Module]/Index.razor +++ b/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/Internal/Oqtane.Client/Modules/[Module]/Index.razor @@ -69,7 +69,7 @@ else { try { - [Module]Service = new [Module]Service(http, sitestate, NavigationManager); + [Module]Service = new [Module]Service(http, sitestate); _[Module]s = await [Module]Service.Get[Module]sAsync(ModuleState.ModuleId); } catch (Exception ex) diff --git a/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/Internal/Oqtane.Client/Modules/[Module]/Services/[Module]Service.cs b/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/Internal/Oqtane.Client/Modules/[Module]/Services/[Module]Service.cs index 5e559c3b..f95c41b9 100644 --- a/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/Internal/Oqtane.Client/Modules/[Module]/Services/[Module]Service.cs +++ b/Oqtane.Client/Modules/Admin/ModuleCreator/Templates/Internal/Oqtane.Client/Modules/[Module]/Services/[Module]Service.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks; -using Microsoft.AspNetCore.Components; using Oqtane.Modules; using Oqtane.Services; using Oqtane.Shared; @@ -12,44 +11,39 @@ namespace [Owner].[Module]s.Services { public class [Module]Service : ServiceBase, I[Module]Service, IService { - private readonly NavigationManager _navigationManager; private readonly SiteState _siteState; - public [Module]Service(HttpClient http, SiteState siteState, NavigationManager navigationManager) : base(http) + public [Module]Service(HttpClient http, SiteState siteState) : base(http) { _siteState = siteState; - _navigationManager = navigationManager; } - private string Apiurl - { - get { return CreateApiUrl(_siteState.Alias, _navigationManager.Uri, "[Module]"); } - } + private string Apiurl=> CreateApiUrl(_siteState.Alias, "[Module]"); public async Task> Get[Module]sAsync(int ModuleId) { - List<[Module]> [Module]s = await GetJsonAsync>(Apiurl + "?moduleid=" + ModuleId.ToString()); + List<[Module]> [Module]s = await GetJsonAsync>($"{Apiurl}?moduleid={ModuleId}"); return [Module]s.OrderBy(item => item.Name).ToList(); } public async Task<[Module]> Get[Module]Async(int [Module]Id) { - return await GetJsonAsync<[Module]>(Apiurl + "/" + [Module]Id.ToString()); + return await GetJsonAsync<[Module]>($"{Apiurl}/{[Module]Id}"); } public async Task<[Module]> Add[Module]Async([Module] [Module]) { - return await PostJsonAsync<[Module]>(Apiurl + "?entityid=" + [Module].ModuleId, [Module]); + return await PostJsonAsync<[Module]>($"{Apiurl}?entityid={[Module].ModuleId}", [Module]); } public async Task<[Module]> Update[Module]Async([Module] [Module]) { - return await PutJsonAsync<[Module]>(Apiurl + "/" + [Module].[Module]Id + "?entityid=" + [Module].ModuleId, [Module]); + return await PutJsonAsync<[Module]>($"{Apiurl}/{[Module].[Module]Id}?entityid={[Module].ModuleId}", [Module]); } public async Task Delete[Module]Async(int [Module]Id) { - await DeleteAsync(Apiurl + "/" + [Module]Id.ToString()); + await DeleteAsync($"{Apiurl}/{[Module]Id}"); } } } diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor index a4069b67..7774b379 100644 --- a/Oqtane.Client/Modules/Admin/Site/Index.razor +++ b/Oqtane.Client/Modules/Admin/Site/Index.razor @@ -251,7 +251,7 @@ { _themeList = await ThemeService.GetThemesAsync(); _aliasList = await AliasService.GetAliasesAsync(); - Site site = await SiteService.GetSiteAsync(PageState.Site.SiteId, PageState.Alias); + Site site = await SiteService.GetSiteAsync(PageState.Site.SiteId); if (site != null) { _name = site.Name; @@ -364,7 +364,7 @@ if (unique) { - var site = await SiteService.GetSiteAsync(PageState.Site.SiteId, PageState.Alias); + var site = await SiteService.GetSiteAsync(PageState.Site.SiteId); if (site != null) { site.Name = _name; @@ -395,7 +395,7 @@ site.PwaSplashIconFileId = pwasplashiconfileid; } - site = await SiteService.UpdateSiteAsync(site, PageState.Alias); + site = await SiteService.UpdateSiteAsync(site); _urls = _urls.Replace("\n", ","); var names = _urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); diff --git a/Oqtane.Client/Modules/Admin/Sites/Edit.razor b/Oqtane.Client/Modules/Admin/Sites/Edit.razor index 2eb3110d..698892a7 100644 --- a/Oqtane.Client/Modules/Admin/Sites/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Sites/Edit.razor @@ -134,18 +134,19 @@ _aliasList = await AliasService.GetAliasesAsync(); _alias = _aliasList.Find(item => item.AliasId == Int32.Parse(PageState.QueryString["id"])); - var site = await SiteService.GetSiteAsync(_alias.SiteId, _alias); + SiteService.SetAlias(_alias); + var site = await SiteService.GetSiteAsync(_alias.SiteId); if (site != null) { _name = site.Name; _tenantList = await TenantService.GetTenantsAsync(); _tenant = _tenantList.Find(item => item.TenantId == site.TenantId).Name; - + foreach (Alias alias in _aliasList.Where(item => item.SiteId == site.SiteId && item.TenantId == site.TenantId).ToList()) { _urls += alias.Name + "\n"; } - + _themetype = site.DefaultThemeType; _panelayouts = ThemeService.GetPaneLayoutTypes(_themeList, _themetype); _layouttype = site.DefaultLayoutType; @@ -182,7 +183,7 @@ { _panelayouts = new Dictionary(); } - + StateHasChanged(); } catch (Exception ex) @@ -206,10 +207,11 @@ unique = false; } } - + if (unique) { - var site = await SiteService.GetSiteAsync(_alias.SiteId, _alias); + SiteService.SetAlias(_alias); + var site = await SiteService.GetSiteAsync(_alias.SiteId); if (site != null) { site.Name = _name; @@ -219,11 +221,11 @@ site.DefaultContainerType = _containertype; site.IsDeleted = (_isdeleted == null || Boolean.Parse(_isdeleted)); - site = await SiteService.UpdateSiteAsync(site, _alias); + site = await SiteService.UpdateSiteAsync(site); _urls = _urls.Replace("\n", ","); var names = _urls.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); - + foreach (Alias alias in _aliasList.Where(item => item.SiteId == site.SiteId && item.TenantId == site.TenantId).ToList()) { if (!names.Contains(alias.Name)) @@ -231,7 +233,7 @@ await AliasService.DeleteAliasAsync(alias.AliasId); } } - + foreach (string name in names) { if (!_aliasList.Exists(item => item.Name == name)) diff --git a/Oqtane.Client/Modules/Admin/Sites/Index.razor b/Oqtane.Client/Modules/Admin/Sites/Index.razor index 978f7ad3..d8b79632 100644 --- a/Oqtane.Client/Modules/Admin/Sites/Index.razor +++ b/Oqtane.Client/Modules/Admin/Sites/Index.razor @@ -54,7 +54,8 @@ else { if (alias.SiteId != PageState.Site.SiteId || alias.TenantId != PageState.Site.TenantId) { - await SiteService.DeleteSiteAsync(alias.SiteId, alias); + SiteService.SetAlias(alias); + await SiteService.DeleteSiteAsync(alias.SiteId); await Log(alias, LogLevel.Information, "", null, "Site Deleted {SiteId}", alias.SiteId); var aliases = await AliasService.GetAliasesAsync(); diff --git a/Oqtane.Client/Modules/HtmlText/Edit.razor b/Oqtane.Client/Modules/HtmlText/Edit.razor index 41c55192..ab0f1feb 100644 --- a/Oqtane.Client/Modules/HtmlText/Edit.razor +++ b/Oqtane.Client/Modules/HtmlText/Edit.razor @@ -16,7 +16,7 @@