Refactor SeasonalsPlugin: Simplify script injection logic (v1.5.0.0)
This commit is contained in:
49
Jellyfin.Plugin.Seasonals/Helpers/TransformationPatches.cs
Normal file
49
Jellyfin.Plugin.Seasonals/Helpers/TransformationPatches.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using Jellyfin.Plugin.Seasonals.Model;
|
||||
|
||||
namespace Jellyfin.Plugin.Seasonals.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 (SeasonalsPlugin.Instance?.Configuration.IsEnabled != true)
|
||||
{
|
||||
return originalContents;
|
||||
}
|
||||
|
||||
// Use StringBuilder for efficient modification
|
||||
var builder = new System.Text.StringBuilder(originalContents);
|
||||
|
||||
// Inject Script if missing
|
||||
if (!originalContents.Contains("seasonals.js", StringComparison.Ordinal))
|
||||
{
|
||||
var scriptIndex = originalContents.LastIndexOf(ScriptInjector.ScriptMarker, StringComparison.OrdinalIgnoreCase);
|
||||
if (scriptIndex != -1)
|
||||
{
|
||||
builder.Insert(scriptIndex, ScriptInjector.ScriptTag + Environment.NewLine);
|
||||
}
|
||||
}
|
||||
|
||||
return builder.ToString();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// On error, return original content to avoid breaking the UI
|
||||
return originalContents;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user