Files
jellyfin-plugin-media-bar-e…/Jellyfin.Plugin.MediaBarEnhanced/Helpers/TransformationPatches.cs
CodeDevMLH bb6310381a
All checks were successful
Auto Release Plugin / build-and-release (push) Successful in 43s
Refactor overlay image handling and improve safety checks for plugin configuration
2026-03-09 04:02:17 +01:00

59 lines
2.1 KiB
C#

using System;
using Jellyfin.Plugin.MediaBarEnhanced.Model;
namespace Jellyfin.Plugin.MediaBarEnhanced.Helpers
{
public static class TransformationPatches
{
public static string IndexHtml(PatchRequestPayload payload)
{
// Always return original content if something fails or is null
string? originalContents = payload?.Contents;
if (string.IsNullOrEmpty(originalContents))
{
return originalContents ?? string.Empty;
}
try
{
// Safety Check: If plugin is disabled, do nothing
if (MediaBarEnhancedPlugin.Instance?.Configuration?.IsEnabled != true)
{
return originalContents;
}
// Use StringBuilder for efficient modification (conceptually similar to stream processing)
var builder = new System.Text.StringBuilder(originalContents);
// Inject Script if missing
if (!originalContents.Contains(ScriptInjector.ScriptTag))
{
var scriptIndex = originalContents.LastIndexOf(ScriptInjector.ScriptMarker, StringComparison.OrdinalIgnoreCase);
if (scriptIndex != -1)
{
builder.Insert(scriptIndex, ScriptInjector.ScriptTag + Environment.NewLine);
}
}
// Inject CSS if missing
if (!originalContents.Contains(ScriptInjector.CssTag))
{
var cssIndex = originalContents.LastIndexOf(ScriptInjector.CssMarker, StringComparison.OrdinalIgnoreCase);
if (cssIndex != -1)
{
builder.Insert(cssIndex, ScriptInjector.CssTag + Environment.NewLine);
}
}
return builder.ToString();
}
catch
{
// On error, return original content to avoid breaking the UI
return originalContents;
}
}
}
}