mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-12-21 08:15:28 +03:00
add new notification features
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
using MediaBrowser.Controller.Dto;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Entities.TV;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.LiveTv;
|
||||
using MediaBrowser.Model.Dto;
|
||||
using ServiceStack;
|
||||
using System;
|
||||
@@ -13,73 +11,20 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace MediaBrowser.Api
|
||||
{
|
||||
[Route("/Items/{ItemId}", "POST")]
|
||||
[Api(("Updates an item"))]
|
||||
[Route("/Items/{ItemId}", "POST", Summary = "Updates an item")]
|
||||
public class UpdateItem : BaseItemDto, IReturnVoid
|
||||
{
|
||||
[ApiMember(Name = "ItemId", Description = "The id of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
|
||||
public string ItemId { get; set; }
|
||||
}
|
||||
|
||||
[Route("/Artists/{ArtistName}", "POST")]
|
||||
[Api(("Updates an artist"))]
|
||||
public class UpdateArtist : BaseItemDto, IReturnVoid
|
||||
{
|
||||
[ApiMember(Name = "ArtistName", Description = "The name of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
|
||||
public string ArtistName { get; set; }
|
||||
}
|
||||
|
||||
[Route("/Studios/{StudioName}", "POST")]
|
||||
[Api(("Updates a studio"))]
|
||||
public class UpdateStudio : BaseItemDto, IReturnVoid
|
||||
{
|
||||
[ApiMember(Name = "StudioName", Description = "The name of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
|
||||
public string StudioName { get; set; }
|
||||
}
|
||||
|
||||
[Route("/Persons/{PersonName}", "POST")]
|
||||
[Api(("Updates a person"))]
|
||||
public class UpdatePerson : BaseItemDto, IReturnVoid
|
||||
{
|
||||
[ApiMember(Name = "PersonName", Description = "The name of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
|
||||
public string PersonName { get; set; }
|
||||
}
|
||||
|
||||
[Route("/MusicGenres/{GenreName}", "POST")]
|
||||
[Api(("Updates a music genre"))]
|
||||
public class UpdateMusicGenre : BaseItemDto, IReturnVoid
|
||||
{
|
||||
[ApiMember(Name = "GenreName", Description = "The name of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
|
||||
public string GenreName { get; set; }
|
||||
}
|
||||
|
||||
[Route("/GameGenres/{GenreName}", "POST")]
|
||||
[Api(("Updates a game genre"))]
|
||||
public class UpdateGameGenre : BaseItemDto, IReturnVoid
|
||||
{
|
||||
[ApiMember(Name = "GenreName", Description = "The name of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
|
||||
public string GenreName { get; set; }
|
||||
}
|
||||
|
||||
[Route("/Genres/{GenreName}", "POST")]
|
||||
[Api(("Updates a genre"))]
|
||||
public class UpdateGenre : BaseItemDto, IReturnVoid
|
||||
{
|
||||
[ApiMember(Name = "GenreName", Description = "The name of the item", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
|
||||
public string GenreName { get; set; }
|
||||
}
|
||||
|
||||
public class ItemUpdateService : BaseApiService
|
||||
{
|
||||
private readonly ILibraryManager _libraryManager;
|
||||
private readonly IDtoService _dtoService;
|
||||
private readonly ILiveTvManager _liveTv;
|
||||
|
||||
public ItemUpdateService(ILibraryManager libraryManager, IDtoService dtoService, ILiveTvManager liveTv)
|
||||
public ItemUpdateService(ILibraryManager libraryManager)
|
||||
{
|
||||
_libraryManager = libraryManager;
|
||||
_dtoService = dtoService;
|
||||
_liveTv = liveTv;
|
||||
}
|
||||
|
||||
public void Post(UpdateItem request)
|
||||
@@ -94,120 +39,29 @@ namespace MediaBrowser.Api
|
||||
var item = _libraryManager.GetItemById(request.ItemId);
|
||||
|
||||
var newLockData = request.LockData ?? false;
|
||||
var dontFetchMetaChanged = item.IsLocked != newLockData;
|
||||
var isLockedChanged = item.IsLocked != newLockData;
|
||||
|
||||
UpdateItem(request, item);
|
||||
|
||||
if (isLockedChanged && item.IsLocked)
|
||||
{
|
||||
item.IsUnidentified = false;
|
||||
}
|
||||
|
||||
await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
|
||||
|
||||
if (dontFetchMetaChanged && item.IsFolder)
|
||||
if (isLockedChanged && item.IsFolder)
|
||||
{
|
||||
var folder = (Folder)item;
|
||||
|
||||
foreach (var child in folder.RecursiveChildren.ToList())
|
||||
{
|
||||
child.DontFetchMeta = newLockData;
|
||||
child.IsLocked = newLockData;
|
||||
await child.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Post(UpdatePerson request)
|
||||
{
|
||||
var task = UpdateItem(request);
|
||||
|
||||
Task.WaitAll(task);
|
||||
}
|
||||
|
||||
private async Task UpdateItem(UpdatePerson request)
|
||||
{
|
||||
var item = GetPerson(request.PersonName, _libraryManager);
|
||||
|
||||
UpdateItem(request, item);
|
||||
|
||||
await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public void Post(UpdateArtist request)
|
||||
{
|
||||
var task = UpdateItem(request);
|
||||
|
||||
Task.WaitAll(task);
|
||||
}
|
||||
|
||||
private async Task UpdateItem(UpdateArtist request)
|
||||
{
|
||||
var item = GetArtist(request.ArtistName, _libraryManager);
|
||||
|
||||
UpdateItem(request, item);
|
||||
|
||||
await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public void Post(UpdateStudio request)
|
||||
{
|
||||
var task = UpdateItem(request);
|
||||
|
||||
Task.WaitAll(task);
|
||||
}
|
||||
|
||||
private async Task UpdateItem(UpdateStudio request)
|
||||
{
|
||||
var item = GetStudio(request.StudioName, _libraryManager);
|
||||
|
||||
UpdateItem(request, item);
|
||||
|
||||
await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public void Post(UpdateMusicGenre request)
|
||||
{
|
||||
var task = UpdateItem(request);
|
||||
|
||||
Task.WaitAll(task);
|
||||
}
|
||||
|
||||
private async Task UpdateItem(UpdateMusicGenre request)
|
||||
{
|
||||
var item = GetMusicGenre(request.GenreName, _libraryManager);
|
||||
|
||||
UpdateItem(request, item);
|
||||
|
||||
await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public void Post(UpdateGameGenre request)
|
||||
{
|
||||
var task = UpdateItem(request);
|
||||
|
||||
Task.WaitAll(task);
|
||||
}
|
||||
|
||||
private async Task UpdateItem(UpdateGameGenre request)
|
||||
{
|
||||
var item = GetGameGenre(request.GenreName, _libraryManager);
|
||||
|
||||
UpdateItem(request, item);
|
||||
|
||||
await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public void Post(UpdateGenre request)
|
||||
{
|
||||
var task = UpdateItem(request);
|
||||
|
||||
Task.WaitAll(task);
|
||||
}
|
||||
|
||||
private async Task UpdateItem(UpdateGenre request)
|
||||
{
|
||||
var item = GetGenre(request.GenreName, _libraryManager);
|
||||
|
||||
UpdateItem(request, item);
|
||||
|
||||
await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private void UpdateItem(BaseItemDto request, BaseItem item)
|
||||
{
|
||||
item.Name = request.Name;
|
||||
@@ -246,7 +100,7 @@ namespace MediaBrowser.Api
|
||||
episode.AirsBeforeSeasonNumber = request.AirsBeforeSeasonNumber;
|
||||
episode.AbsoluteEpisodeNumber = request.AbsoluteEpisodeNumber;
|
||||
}
|
||||
|
||||
|
||||
var hasTags = item as IHasTags;
|
||||
if (hasTags != null)
|
||||
{
|
||||
@@ -295,14 +149,14 @@ namespace MediaBrowser.Api
|
||||
{
|
||||
hasDisplayOrder.DisplayOrder = request.DisplayOrder;
|
||||
}
|
||||
|
||||
|
||||
var hasAspectRatio = item as IHasAspectRatio;
|
||||
if (hasAspectRatio != null)
|
||||
{
|
||||
hasAspectRatio.AspectRatio = request.AspectRatio;
|
||||
}
|
||||
|
||||
item.DontFetchMeta = (request.LockData ?? false);
|
||||
item.IsLocked = (request.LockData ?? false);
|
||||
|
||||
if (request.LockedFields != null)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user