mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-04-24 05:57:20 -04:00
Fix splashscreen (#7895)
This commit is contained in:
parent
2888080098
commit
d73e9f3af5
2 changed files with 41 additions and 1 deletions
|
@ -1724,6 +1724,11 @@ namespace Jellyfin.Api.Controllers
|
|||
[FromQuery, Range(0, 100)] int quality = 90)
|
||||
{
|
||||
var brandingOptions = _serverConfigurationManager.GetConfiguration<BrandingOptions>("branding");
|
||||
if (!brandingOptions.SplashscreenEnabled)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
string splashscreenPath;
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(brandingOptions.SplashscreenLocation)
|
||||
|
@ -1776,6 +1781,7 @@ namespace Jellyfin.Api.Controllers
|
|||
|
||||
/// <summary>
|
||||
/// Uploads a custom splashscreen.
|
||||
/// The body is expected to the image contents base64 encoded.
|
||||
/// </summary>
|
||||
/// <returns>A <see cref="NoContentResult"/> indicating success.</returns>
|
||||
/// <response code="204">Successfully uploaded new splashscreen.</response>
|
||||
|
@ -1799,7 +1805,13 @@ namespace Jellyfin.Api.Controllers
|
|||
return BadRequest("Error reading mimetype from uploaded image");
|
||||
}
|
||||
|
||||
var filePath = Path.Combine(_appPaths.DataPath, "splashscreen-upload" + MimeTypes.ToExtension(mimeType.Value));
|
||||
var extension = MimeTypes.ToExtension(mimeType.Value);
|
||||
if (string.IsNullOrEmpty(extension))
|
||||
{
|
||||
return BadRequest("Error converting mimetype to an image extension");
|
||||
}
|
||||
|
||||
var filePath = Path.Combine(_appPaths.DataPath, "splashscreen-upload" + extension);
|
||||
var brandingOptions = _serverConfigurationManager.GetConfiguration<BrandingOptions>("branding");
|
||||
brandingOptions.SplashscreenLocation = filePath;
|
||||
_serverConfigurationManager.SaveConfiguration("branding", brandingOptions);
|
||||
|
@ -1812,6 +1824,29 @@ namespace Jellyfin.Api.Controllers
|
|||
return NoContent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Delete a custom splashscreen.
|
||||
/// </summary>
|
||||
/// <returns>A <see cref="NoContentResult"/> indicating success.</returns>
|
||||
/// <response code="204">Successfully deleted the custom splashscreen.</response>
|
||||
/// <response code="403">User does not have permission to delete splashscreen..</response>
|
||||
[HttpDelete("Branding/Splashscreen")]
|
||||
[Authorize(Policy = Policies.RequiresElevation)]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
public ActionResult DeleteCustomSplashscreen()
|
||||
{
|
||||
var brandingOptions = _serverConfigurationManager.GetConfiguration<BrandingOptions>("branding");
|
||||
if (!string.IsNullOrEmpty(brandingOptions.SplashscreenLocation)
|
||||
&& System.IO.File.Exists(brandingOptions.SplashscreenLocation))
|
||||
{
|
||||
System.IO.File.Delete(brandingOptions.SplashscreenLocation);
|
||||
brandingOptions.SplashscreenLocation = null;
|
||||
_serverConfigurationManager.SaveConfiguration("branding", brandingOptions);
|
||||
}
|
||||
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
private static async Task<MemoryStream> GetMemoryStream(Stream inputStream)
|
||||
{
|
||||
using var reader = new StreamReader(inputStream);
|
||||
|
|
|
@ -20,6 +20,11 @@ public class BrandingOptions
|
|||
/// <value>The custom CSS.</value>
|
||||
public string? CustomCss { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether to enable the splashscreen.
|
||||
/// </summary>
|
||||
public bool SplashscreenEnabled { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the splashscreen location on disk.
|
||||
/// </summary>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue