From 50e179f7a884b6128cd3fb314989264a9be1297d Mon Sep 17 00:00:00 2001
From: sbwalker
Date: Wed, 31 Jan 2024 09:40:47 -0500
Subject: [PATCH] add support for Render Modes and Prerendering
---
Oqtane.Client/Utilities/RenderModes.cs | 10 +++----
Oqtane.Server/Components/App.razor | 38 ++++++++++++++++++--------
2 files changed, 32 insertions(+), 16 deletions(-)
diff --git a/Oqtane.Client/Utilities/RenderModes.cs b/Oqtane.Client/Utilities/RenderModes.cs
index 820dec37..4809e238 100644
--- a/Oqtane.Client/Utilities/RenderModes.cs
+++ b/Oqtane.Client/Utilities/RenderModes.cs
@@ -5,16 +5,16 @@ namespace Oqtane.Client.Utilities
{
public static class RenderModes
{
- public static IComponentRenderMode GetRenderMode(string renderMode)
+ public static IComponentRenderMode GetInteractiveRenderMode(string interactiveRenderMode, bool prerender)
{
- switch (renderMode)
+ switch (interactiveRenderMode)
{
case "InteractiveServer":
- return RenderMode.InteractiveServer;
+ return new InteractiveServerRenderMode(prerender);
case "InteractiveWebAssembly":
- return RenderMode.InteractiveWebAssembly;
+ return new InteractiveWebAssemblyRenderMode(prerender);
case "InteractiveAuto":
- return RenderMode.InteractiveAuto;
+ return new InteractiveAutoRenderMode(prerender);
}
return null;
}
diff --git a/Oqtane.Server/Components/App.razor b/Oqtane.Server/Components/App.razor
index 5ac4e664..170db48d 100644
--- a/Oqtane.Server/Components/App.razor
+++ b/Oqtane.Server/Components/App.razor
@@ -40,13 +40,27 @@
@((MarkupString)_styleSheets)
-
+ @if (_renderMode == "Interactive")
+ {
+
@if (string.IsNullOrEmpty(_message))
{
-
+ @if (_renderMode == "Interactive")
+ {
+
+ }
+ else
+ {
+
+ }
@@ -69,7 +83,9 @@
@code {
- private string _interactiveRenderMode = "InteractiveServer";
+ private string _renderMode = "Interactive";
+ private string _interactiveRenderMode = "Server";
+ private bool _prerender = true;
private string _language = "en";
private string _antiForgeryToken = "";
private string _remoteIPAddress = "";
@@ -102,14 +118,14 @@
var site = SiteRepository.GetSite(alias.SiteId);
if (site != null && (!site.IsDeleted || url.Contains("admin/site")) && site.Runtime != "Hybrid")
{
- // if (!string.IsNullOrEmpty(site.Runtime))
- // {
- // Runtime = site.Runtime;
- // }
- // if (!string.IsNullOrEmpty(site.RenderMode))
- // {
- // RenderMode = site.RenderMode;
- // }
+ if (!string.IsNullOrEmpty(site.Runtime))
+ {
+ _interactiveRenderMode = site.Runtime;
+ }
+ if (!string.IsNullOrEmpty(site.RenderMode))
+ {
+ _prerender = (site.RenderMode.Replace(site.Runtime, "")) == "Prerendered";
+ }
Route route = new Route(url, alias.Path);
var page = PageRepository.GetPage(route.PagePath, site.SiteId);