using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Jellyfin.Plugin.RecentlyAddedGuard.Services;
using MediaBrowser.Model.Tasks;
namespace Jellyfin.Plugin.RecentlyAddedGuard.Tasks;
///
/// Scheduled task "Ledger synchronisieren": registers unknown items, updates live items and prunes the ledger.
/// It never changes library items.
///
public class SyncLedgerTask : IScheduledTask
{
///
/// The task key.
///
public const string TaskKey = "RecentlyAddedGuardSyncLedger";
private readonly LedgerSynchronizer _synchronizer;
///
/// Initializes a new instance of the class.
///
/// The synchronizer.
public SyncLedgerTask(LedgerSynchronizer synchronizer)
{
_synchronizer = synchronizer;
}
///
public string Name => "Ledger synchronisieren";
///
public string Key => TaskKey;
///
public string Description
=> "Gleicht das Ledger von Recently Added Guard mit der Bibliothek ab: registriert unbekannte Filme und Episoden, "
+ "trägt gelöschte Items aus und bereinigt abgelaufene Einträge. Ändert keine Items.";
///
public string Category => "Recently Added Guard";
///
public Task ExecuteAsync(IProgress progress, CancellationToken cancellationToken)
=> _synchronizer.RunAsync(progress, cancellationToken);
///
public IEnumerable GetDefaultTriggers()
{
yield return new TaskTriggerInfo
{
Type = TaskTriggerInfoType.DailyTrigger,
TimeOfDayTicks = TimeSpan.FromHours(3).Ticks
};
}
}