mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-05-24 00:52:23 -04:00
82 lines
2.2 KiB
C#
82 lines
2.2 KiB
C#
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using API.Data;
|
|
using API.DTOs.Theme;
|
|
using API.Extensions;
|
|
using API.Services;
|
|
using API.Services.Tasks;
|
|
using Kavita.Common;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace API.Controllers;
|
|
|
|
#nullable enable
|
|
|
|
public class ThemeController : BaseApiController
|
|
{
|
|
private readonly IUnitOfWork _unitOfWork;
|
|
private readonly IThemeService _themeService;
|
|
private readonly ITaskScheduler _taskScheduler;
|
|
private readonly ILocalizationService _localizationService;
|
|
|
|
public ThemeController(IUnitOfWork unitOfWork, IThemeService themeService, ITaskScheduler taskScheduler,
|
|
ILocalizationService localizationService)
|
|
{
|
|
_unitOfWork = unitOfWork;
|
|
_themeService = themeService;
|
|
_taskScheduler = taskScheduler;
|
|
_localizationService = localizationService;
|
|
}
|
|
|
|
[ResponseCache(CacheProfileName = "10Minute")]
|
|
[AllowAnonymous]
|
|
[HttpGet]
|
|
public async Task<ActionResult<IEnumerable<SiteThemeDto>>> GetThemes()
|
|
{
|
|
return Ok(await _unitOfWork.SiteThemeRepository.GetThemeDtos());
|
|
}
|
|
|
|
[Authorize("RequireAdminRole")]
|
|
[HttpPost("scan")]
|
|
public ActionResult Scan()
|
|
{
|
|
_taskScheduler.ScanSiteThemes();
|
|
return Ok();
|
|
}
|
|
|
|
[Authorize("RequireAdminRole")]
|
|
[HttpPost("update-default")]
|
|
public async Task<ActionResult> UpdateDefault(UpdateDefaultThemeDto dto)
|
|
{
|
|
try
|
|
{
|
|
await _themeService.UpdateDefault(dto.ThemeId);
|
|
}
|
|
catch (KavitaException)
|
|
{
|
|
return BadRequest(await _localizationService.Translate(User.GetUserId(), "theme-doesnt-exist"));
|
|
}
|
|
|
|
return Ok();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns css content to the UI. UI is expected to escape the content
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[AllowAnonymous]
|
|
[HttpGet("download-content")]
|
|
public async Task<ActionResult<string>> GetThemeContent(int themeId)
|
|
{
|
|
try
|
|
{
|
|
return Ok(await _themeService.GetContent(themeId));
|
|
}
|
|
catch (KavitaException ex)
|
|
{
|
|
return BadRequest(await _localizationService.Get("en", ex.Message));
|
|
}
|
|
}
|
|
}
|