using Microsoft.AspNetCore.Components; using Microsoft.Extensions.Caching.Memory; namespace ApplianceRepair.Components.Pages { public partial class Home(IMemoryCache cache, HomePageReader homePageReader, ContentCardReader contentCardReader, BusinessConfigReader businessConfigReader) : ComponentBase { private HomePageModel? Model; protected override async Task OnInitializedAsync() { // TODO: Figure out a better cache system, needs to be marked dirty if admin makes a config change //if (!cache.TryGetValue(nameof(HomePageModel), out Model)) //{ // var businessConfig = await businessConfigReader.ReadLatestRecord() ?? Defaults.DefaultBusinessConfig; // var latestHomeRecord = await homePageReader.ReadLatestRecord() ?? Defaults.DefaultHomePageContent; // var servicesList = await contentCardReader.ReadAllByPageAndGroup(HomePageModel.PageName, nameof(HomePageModel.ContentCardTypes.Services)) ?? []; // var trustList = await contentCardReader.ReadAllByPageAndGroup(HomePageModel.PageName, nameof(HomePageModel.ContentCardTypes.Trust)) ?? []; // Model = new HomePageModel(latestHomeRecord, businessConfig, servicesList, trustList); // var cacheOptions = new MemoryCacheEntryOptions() // .SetAbsoluteExpiration(TimeSpan.FromHours(24)) // .SetSlidingExpiration(TimeSpan.FromHours(2)); // cache.Set(nameof(HomePageModel), Model, cacheOptions); //} var businessConfig = await businessConfigReader.ReadLatestRecord() ?? Defaults.DefaultBusinessConfig; var latestHomeRecord = await homePageReader.ReadLatestRecord() ?? Defaults.DefaultHomePageContent; var servicesList = await contentCardReader.ReadAllByPageAndGroup(HomePageModel.PageName, nameof(HomePageModel.ContentCardTypes.Services)) ?? []; var trustList = await contentCardReader.ReadAllByPageAndGroup(HomePageModel.PageName, nameof(HomePageModel.ContentCardTypes.Trust)) ?? []; Model = new HomePageModel(latestHomeRecord, businessConfig, servicesList, trustList); } } }