remove A/B testing logic for stylesheets - discard root component approach in favor of legacy JS Interop approach to eliminate FOUC issues
This commit is contained in:
		| @ -19,12 +19,7 @@ namespace Oqtane.Themes.Controls | ||||
|         { | ||||
|             if (page.IsClickable) | ||||
|             { | ||||
|                 var url = string.IsNullOrEmpty(page.Url) ? NavigateUrl(page.Path) : page.Url; | ||||
|                 if (PageState.QueryString.ContainsKey("method")) | ||||
|                 { | ||||
|                     url += ((url.Contains("?")) ? "&" : "?") + "method=" + PageState.QueryString["method"]; | ||||
|                 } | ||||
|                 return url; | ||||
|                 return string.IsNullOrEmpty(page.Url) ? NavigateUrl(page.Path) : page.Url; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|  | ||||
| @ -42,16 +42,6 @@ | ||||
|         } | ||||
|         headcontent += $"<link id=\"app-favicon\" rel=\"shortcut icon\" type=\"image/{favicontype}\" href=\"{favicon}\" />\n"; | ||||
|  | ||||
|         if (PageState.QueryString.ContainsKey("method") && PageState.QueryString["method"] == "new") | ||||
|         { | ||||
|             // stylesheets | ||||
|             foreach (Resource resource in PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Stylesheet)) | ||||
|             { | ||||
|                 var url = (resource.Url.Contains("://")) ? resource.Url : PageState.Alias.BaseUrl + resource.Url; | ||||
|                 headcontent += "<link rel=\"stylesheet\" href=\"" + url + "\"" + (!string.IsNullOrEmpty(resource.Integrity) ? " integrity=\"" + resource.Integrity + "\"" : "") + (!string.IsNullOrEmpty(resource.CrossOrigin) ? " crossorigin=\"" + resource.CrossOrigin + "\"" : "") + " type=\"text/css\"/>" + "\n"; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         // head content | ||||
|         AddHeadContent(headcontent, PageState.Site.HeadContent); | ||||
|         if (!string.IsNullOrEmpty(PageState.Site.HeadContent)) | ||||
| @ -106,27 +96,24 @@ | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if (!PageState.QueryString.ContainsKey("method") || (PageState.QueryString.ContainsKey("method") && PageState.QueryString["method"] == "old")) | ||||
|         // style sheets | ||||
|         if (PageState.Page.Resources != null && PageState.Page.Resources.Exists(item => item.ResourceType == ResourceType.Stylesheet)) | ||||
|         { | ||||
|             // style sheets | ||||
|             if (PageState.Page.Resources != null && PageState.Page.Resources.Exists(item => item.ResourceType == ResourceType.Stylesheet)) | ||||
|             var interop = new Interop(JSRuntime); | ||||
|             string batch = DateTime.UtcNow.ToString("yyyyMMddHHmmssfff"); | ||||
|             var links = new List<object>(); | ||||
|             foreach (Resource resource in PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Stylesheet)) | ||||
|             { | ||||
|                 var interop = new Interop(JSRuntime); | ||||
|                 string batch = DateTime.UtcNow.ToString("yyyyMMddHHmmssfff"); | ||||
|                 var links = new List<object>(); | ||||
|                 foreach (Resource resource in PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Stylesheet)) | ||||
|                 { | ||||
|                     var prefix = "app-stylesheet-" + resource.Level.ToString().ToLower(); | ||||
|                     var url = (resource.Url.Contains("://")) ? resource.Url : PageState.Alias.BaseUrl + resource.Url; | ||||
|                     links.Add(new { id = prefix + "-" + batch + "-" + (links.Count + 1).ToString("00"), rel = "stylesheet", href = url, type = "text/css", integrity = resource.Integrity ?? "", crossorigin = resource.CrossOrigin ?? "", insertbefore = prefix }); | ||||
|                 } | ||||
|                 if (links.Any()) | ||||
|                 { | ||||
|                     await interop.IncludeLinks(links.ToArray()); | ||||
|                 } | ||||
|                 await interop.RemoveElementsById("app-stylesheet-page-", "", "app-stylesheet-page-" + batch + "-00"); | ||||
|                 await interop.RemoveElementsById("app-stylesheet-module-", "", "app-stylesheet-module-" + batch + "-00"); | ||||
|                 var prefix = "app-stylesheet-" + resource.Level.ToString().ToLower(); | ||||
|                 var url = (resource.Url.Contains("://")) ? resource.Url : PageState.Alias.BaseUrl + resource.Url; | ||||
|                 links.Add(new { id = prefix + "-" + batch + "-" + (links.Count + 1).ToString("00"), rel = "stylesheet", href = url, type = "text/css", integrity = resource.Integrity ?? "", crossorigin = resource.CrossOrigin ?? "", insertbefore = prefix }); | ||||
|             } | ||||
|             if (links.Any()) | ||||
|             { | ||||
|                 await interop.IncludeLinks(links.ToArray()); | ||||
|             } | ||||
|             await interop.RemoveElementsById("app-stylesheet-page-", "", "app-stylesheet-page-" + batch + "-00"); | ||||
|             await interop.RemoveElementsById("app-stylesheet-module-", "", "app-stylesheet-module-" + batch + "-00"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 sbwalker
					sbwalker