fix JavaScript injection issue on first render for Resources defined in IModule and ITheme

This commit is contained in:
sbwalker
2023-06-05 22:00:02 -04:00
parent 3692ec49c1
commit 818fd2fb43

View File

@ -96,30 +96,30 @@
{ {
await InjectScripts(PageState.Page.BodyContent, ResourceLocation.Body); await InjectScripts(PageState.Page.BodyContent, ResourceLocation.Body);
} }
}
if (PageState.Page.Resources != null && PageState.Page.Resources.Exists(item => item.ResourceType == ResourceType.Script)) if (PageState.Page.Resources != null && PageState.Page.Resources.Exists(item => item.ResourceType == ResourceType.Script))
{
var interop = new Interop(JSRuntime);
var scripts = new List<object>();
var inline = 0;
foreach (Resource resource in PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level != ResourceLevel.Site))
{ {
var interop = new Interop(JSRuntime); if (!string.IsNullOrEmpty(resource.Url))
var scripts = new List<object>();
var inline = 0;
foreach (Resource resource in PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Script && item.Level != ResourceLevel.Site))
{ {
if (!string.IsNullOrEmpty(resource.Url)) var url = (resource.Url.Contains("://")) ? resource.Url : PageState.Alias.BaseUrl + resource.Url;
{ scripts.Add(new { href = url, bundle = resource.Bundle ?? "", integrity = resource.Integrity ?? "", crossorigin = resource.CrossOrigin ?? "", es6module = resource.ES6Module, location = resource.Location.ToString().ToLower() });
var url = (resource.Url.Contains("://")) ? resource.Url : PageState.Alias.BaseUrl + resource.Url;
scripts.Add(new { href = url, bundle = resource.Bundle ?? "", integrity = resource.Integrity ?? "", crossorigin = resource.CrossOrigin ?? "", es6module = resource.ES6Module, location = resource.Location.ToString().ToLower() });
}
else
{
inline += 1;
await interop.IncludeScript(GetType().Namespace.ToLower() + inline.ToString(), "", "", "", resource.Content, resource.Location.ToString().ToLower());
}
} }
if (scripts.Any()) else
{ {
await interop.IncludeScripts(scripts.ToArray()); inline += 1;
await interop.IncludeScript(GetType().Namespace.ToLower() + inline.ToString(), "", "", "", resource.Content, resource.Location.ToString().ToLower());
} }
} }
if (scripts.Any())
{
await interop.IncludeScripts(scripts.ToArray());
}
} }
} }