Try your search with a different keyword or use * as a wildcard.
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Nop.Core;
using Nop.Core.Caching;
using Nop.Plugin.Widgets.Swiper.Domain;
using Nop.Plugin.Widgets.Swiper.Infrastructure.Cache;
using Nop.Plugin.Widgets.Swiper.Models;
using Nop.Services.Configuration;
using Nop.Services.Media;
using Nop.Web.Framework.Components;
namespace Nop.Plugin.Widgets.Swiper.Components;
public class WidgetSwiperViewComponent : NopViewComponent
{
#region Fields
protected readonly IPictureService _pictureService;
protected readonly IStaticCacheManager _staticCacheManager;
protected readonly ISettingService _settingService;
protected readonly IStoreContext _storeContext;
protected readonly IWebHelper _webHelper;
#endregion
#region Ctor
public WidgetSwiperViewComponent(IPictureService pictureService,
IStaticCacheManager staticCacheManager,
ISettingService settingService,
IStoreContext storeContext,
IWebHelper webHelper)
{
_pictureService = pictureService;
_staticCacheManager = staticCacheManager;
_settingService = settingService;
_storeContext = storeContext;
_webHelper = webHelper;
}
#endregion
#region Utilities
/// A task that represents the asynchronous operation
private async Task GetPictureUrlAsync(int pictureId)
{
if (pictureId == 0)
return string.Empty;
var cacheKey = _staticCacheManager.PrepareKeyForDefaultCache(ModelCacheEventConsumer.PictureUrlModelKey,
pictureId, _webHelper.IsCurrentConnectionSecured());
return await _staticCacheManager.GetAsync(cacheKey, async () =>
{
//little hack here. nulls aren't cacheable so set it to ""
var url = await _pictureService.GetPictureUrlAsync(pictureId, showDefaultPicture: false) ?? "";
return url;
});
}
#endregion
#region Methods
/// A task that represents the asynchronous operation
public async Task InvokeAsync(string widgetZone, object additionalData)
{
var store = await _storeContext.GetCurrentStoreAsync();
var sliderSettings = await _settingService.LoadSettingAsync(store.Id);
if (string.IsNullOrEmpty(sliderSettings.Slides))
return Content("");
var model = new PublicInfoModel
{
ShowNavigation = sliderSettings.ShowNavigation,
ShowPagination = sliderSettings.ShowPagination,
Autoplay = sliderSettings.Autoplay,
AutoplayDelay = sliderSettings.AutoplayDelay,
};
var slides = JsonConvert.DeserializeObject>(sliderSettings.Slides);
foreach (var slide in slides)
{
var picUrl = await GetPictureUrlAsync(slide.PictureId);
if (string.IsNullOrEmpty(picUrl))
continue;
model.Slides.Add(new()
{
PictureUrl = picUrl,
TitleText = slide.TitleText,
LinkUrl = slide.LinkUrl,
AltText = slide.AltText,
LazyLoading = sliderSettings.LazyLoading
});
}
if (!model.Slides.Any())
return Content("");
return View("~/Plugins/Widgets.Swiper/Views/PublicInfo.cshtml", model);
}
#endregion
}