Files
jellyfin-plugin-media-bar-e…/Jellyfin.Plugin.MediaBarEnhanced/Helpers/TransformationPatches.cs
CodeDevMLH ba75b0175a
All checks were successful
Auto Release Plugin / build-and-release (push) Successful in 48s
init
2026-01-06 02:17:48 +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)
{
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;
}
}
}
}