use deep cloning to not muttate cache

This commit is contained in:
sbwalker
2024-09-19 09:41:11 -04:00
parent f2c8d80ff8
commit 78177f7890
7 changed files with 275 additions and 98 deletions

View File

@ -187,47 +187,47 @@ namespace Oqtane.Models
[NotMapped]
public List<Theme> Themes { get; set; }
public Site Clone(Site site)
public Site Clone()
{
return new Site
{
SiteId = site.SiteId,
TenantId = site.TenantId,
Name = site.Name,
LogoFileId = site.LogoFileId,
FaviconFileId = site.FaviconFileId,
DefaultThemeType = site.DefaultThemeType,
DefaultContainerType = site.DefaultContainerType,
AdminContainerType = site.AdminContainerType,
PwaIsEnabled = site.PwaIsEnabled,
PwaAppIconFileId = site.PwaAppIconFileId,
PwaSplashIconFileId = site.PwaSplashIconFileId,
AllowRegistration = site.AllowRegistration,
VisitorTracking = site.VisitorTracking,
CaptureBrokenUrls = site.CaptureBrokenUrls,
SiteGuid = site.SiteGuid,
RenderMode = site.RenderMode,
Runtime = site.Runtime,
Prerender = site.Prerender,
Hybrid = site.Hybrid,
Version = site.Version,
HomePageId = site.HomePageId,
HeadContent = site.HeadContent,
BodyContent = site.BodyContent,
IsDeleted = site.IsDeleted,
DeletedBy = site.DeletedBy,
DeletedOn = site.DeletedOn,
ImageFiles = site.ImageFiles,
UploadableFiles = site.UploadableFiles,
SiteTemplateType = site.SiteTemplateType,
CreatedBy = site.CreatedBy,
CreatedOn = site.CreatedOn,
ModifiedBy = site.ModifiedBy,
ModifiedOn = site.ModifiedOn,
Settings = site.Settings.ToDictionary(),
Pages = site.Pages.ToList(),
Languages = site.Languages.ToList(),
Themes = site.Themes.ToList()
SiteId = SiteId,
TenantId = TenantId,
Name = Name,
LogoFileId = LogoFileId,
FaviconFileId = FaviconFileId,
DefaultThemeType = DefaultThemeType,
DefaultContainerType = DefaultContainerType,
AdminContainerType = AdminContainerType,
PwaIsEnabled = PwaIsEnabled,
PwaAppIconFileId = PwaAppIconFileId,
PwaSplashIconFileId = PwaSplashIconFileId,
AllowRegistration = AllowRegistration,
VisitorTracking = VisitorTracking,
CaptureBrokenUrls = CaptureBrokenUrls,
SiteGuid = SiteGuid,
RenderMode = RenderMode,
Runtime = Runtime,
Prerender = Prerender,
Hybrid = Hybrid,
Version = Version,
HomePageId = HomePageId,
HeadContent = HeadContent,
BodyContent = BodyContent,
IsDeleted = IsDeleted,
DeletedBy = DeletedBy,
DeletedOn = DeletedOn,
ImageFiles = ImageFiles,
UploadableFiles = UploadableFiles,
SiteTemplateType = SiteTemplateType,
CreatedBy = CreatedBy,
CreatedOn = CreatedOn,
ModifiedBy = ModifiedBy,
ModifiedOn = ModifiedOn,
Settings = Settings.ToDictionary(setting => setting.Key, setting => setting.Value),
Pages = Pages.ConvertAll(page => page.Clone()),
Languages = Languages.ConvertAll(language => language.Clone()),
Themes = Themes
};
}