aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Emby.Server.Implementations/Channels/ChannelManager.cs32
-rw-r--r--Emby.Server.Implementations/Collections/CollectionManager.cs4
-rw-r--r--Emby.Server.Implementations/IO/FileRefresher.cs17
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs19
-rw-r--r--Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs7
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs2
-rw-r--r--Emby.Server.Implementations/Library/UserViewManager.cs10
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvManager.cs69
-rw-r--r--Emby.Server.Implementations/Playlists/PlaylistManager.cs6
-rw-r--r--MediaBrowser.Api/ChannelService.cs10
-rw-r--r--MediaBrowser.Api/Images/ImageService.cs20
-rw-r--r--MediaBrowser.Api/Images/RemoteImageService.cs14
-rw-r--r--MediaBrowser.Api/ItemUpdateService.cs11
-rw-r--r--MediaBrowser.Api/LiveTv/LiveTvService.cs14
-rw-r--r--MediaBrowser.Api/VideosService.cs46
-rw-r--r--MediaBrowser.Controller/Channels/IChannelManager.cs5
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs45
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs13
-rw-r--r--MediaBrowser.Controller/Entities/IHasMetadata.cs11
-rw-r--r--MediaBrowser.Controller/Entities/User.cs3
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs100
-rw-r--r--MediaBrowser.Controller/Entities/Video.cs33
-rw-r--r--MediaBrowser.Controller/Library/ILibraryManager.cs12
-rw-r--r--MediaBrowser.Controller/Library/IUserViewManager.cs4
-rw-r--r--MediaBrowser.Controller/LiveTv/ILiveTvManager.cs20
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs5
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs5
-rw-r--r--MediaBrowser.Controller/Providers/IProviderManager.cs8
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs4
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs14
-rw-r--r--MediaBrowser.Providers/TV/DummySeasonProvider.cs4
-rw-r--r--MediaBrowser.XbmcMetadata/EntryPoint.cs6
32 files changed, 233 insertions, 340 deletions
diff --git a/Emby.Server.Implementations/Channels/ChannelManager.cs b/Emby.Server.Implementations/Channels/ChannelManager.cs
index d3950929d..0036d1970 100644
--- a/Emby.Server.Implementations/Channels/ChannelManager.cs
+++ b/Emby.Server.Implementations/Channels/ChannelManager.cs
@@ -373,7 +373,7 @@ namespace Emby.Server.Implementations.Channels
private async Task<Channel> GetChannel(IChannel channelInfo, CancellationToken cancellationToken)
{
- var parentFolder = await GetInternalChannelFolder(cancellationToken).ConfigureAwait(false);
+ var parentFolder = GetInternalChannelFolder(cancellationToken);
var parentFolderId = parentFolder.Id;
var id = GetInternalChannelId(channelInfo.Name);
@@ -434,7 +434,7 @@ namespace Emby.Server.Implementations.Channels
}
else if (forceUpdate)
{
- await item.UpdateToRepository(ItemUpdateType.None, cancellationToken).ConfigureAwait(false);
+ item.UpdateToRepository(ItemUpdateType.None, cancellationToken);
}
await item.RefreshMetadata(new MetadataRefreshOptions(_fileSystem), cancellationToken);
@@ -655,14 +655,12 @@ namespace Emby.Server.Implementations.Channels
// Avoid implicitly captured closure
var token = cancellationToken;
- var itemTasks = items.Select(i =>
+ var internalItems = items.Select(i =>
{
var channelProvider = i.Item1;
var internalChannelId = GetInternalChannelId(channelProvider.Name);
return GetChannelItemEntity(i.Item2, channelProvider, internalChannelId, token);
- });
-
- var internalItems = await Task.WhenAll(itemTasks).ConfigureAwait(false);
+ }).ToArray();
internalItems = ApplyFilters(internalItems, query.Filters, user).ToArray();
RefreshIfNeeded(internalItems);
@@ -802,14 +800,12 @@ namespace Emby.Server.Implementations.Channels
// Avoid implicitly captured closure
var token = cancellationToken;
- var itemTasks = items.Select(i =>
+ var internalItems = items.Select(i =>
{
var channelProvider = i.Item1;
var internalChannelId = GetInternalChannelId(channelProvider.Name);
return GetChannelItemEntity(i.Item2, channelProvider, internalChannelId, token);
- });
-
- var internalItems = await Task.WhenAll(itemTasks).ConfigureAwait(false);
+ }).ToArray();
return new QueryResult<BaseItem>
{
@@ -955,9 +951,7 @@ namespace Emby.Server.Implementations.Channels
var providerTotalRecordCount = providerLimit.HasValue ? itemsResult.TotalRecordCount : null;
- var tasks = itemsResult.Items.Select(i => GetChannelItemEntity(i, channelProvider, channel.Id, cancellationToken));
-
- var internalItems = await Task.WhenAll(tasks).ConfigureAwait(false);
+ var internalItems = itemsResult.Items.Select(i => GetChannelItemEntity(i, channelProvider, channel.Id, cancellationToken)).ToArray();
if (user != null)
{
@@ -1234,7 +1228,7 @@ namespace Emby.Server.Implementations.Channels
return item;
}
- private async Task<BaseItem> GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, Guid internalChannelId, CancellationToken cancellationToken)
+ private BaseItem GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, Guid internalChannelId, CancellationToken cancellationToken)
{
BaseItem item;
bool isNew;
@@ -1399,7 +1393,7 @@ namespace Emby.Server.Implementations.Channels
}
else if (forceUpdate)
{
- await item.UpdateToRepository(ItemUpdateType.None, cancellationToken).ConfigureAwait(false);
+ item.UpdateToRepository(ItemUpdateType.None, cancellationToken);
}
SaveMediaSources(item, info.MediaSources);
@@ -1542,20 +1536,20 @@ namespace Emby.Server.Implementations.Channels
return items;
}
- public async Task<BaseItemDto> GetChannelFolder(string userId, CancellationToken cancellationToken)
+ public BaseItemDto GetChannelFolder(string userId, CancellationToken cancellationToken)
{
var user = string.IsNullOrEmpty(userId) ? null : _userManager.GetUserById(userId);
- var folder = await GetInternalChannelFolder(cancellationToken).ConfigureAwait(false);
+ var folder = GetInternalChannelFolder(cancellationToken);
return _dtoService.GetBaseItemDto(folder, new DtoOptions(), user);
}
- public async Task<Folder> GetInternalChannelFolder(CancellationToken cancellationToken)
+ public Folder GetInternalChannelFolder(CancellationToken cancellationToken)
{
var name = _localization.GetLocalizedString("ViewTypeChannels");
- return await _libraryManager.GetNamedView(name, "channels", "zz_" + name, cancellationToken).ConfigureAwait(false);
+ return _libraryManager.GetNamedView(name, "channels", "zz_" + name, cancellationToken);
}
}
diff --git a/Emby.Server.Implementations/Collections/CollectionManager.cs b/Emby.Server.Implementations/Collections/CollectionManager.cs
index 2e884e729..c8e947fd7 100644
--- a/Emby.Server.Implementations/Collections/CollectionManager.cs
+++ b/Emby.Server.Implementations/Collections/CollectionManager.cs
@@ -203,7 +203,7 @@ namespace Emby.Server.Implementations.Collections
collection.UpdateRatingToContent();
- await collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
_providerManager.QueueRefresh(collection.Id, refreshOptions, RefreshPriority.High);
@@ -262,7 +262,7 @@ namespace Emby.Server.Implementations.Collections
collection.UpdateRatingToContent();
- await collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
_providerManager.QueueRefresh(collection.Id, new MetadataRefreshOptions(_fileSystem), RefreshPriority.High);
EventHelper.FireEventIfNotNull(ItemsRemovedFromCollection, this, new CollectionModifiedEventArgs
diff --git a/Emby.Server.Implementations/IO/FileRefresher.cs b/Emby.Server.Implementations/IO/FileRefresher.cs
index 315bee103..85b8bddd2 100644
--- a/Emby.Server.Implementations/IO/FileRefresher.cs
+++ b/Emby.Server.Implementations/IO/FileRefresher.cs
@@ -154,20 +154,13 @@ namespace Emby.Server.Implementations.IO
.DistinctBy(i => i.Id)
.ToList();
- //foreach (var p in paths)
- //{
- // Logger.Info(p + " reports change.");
- //}
-
- // If the root folder changed, run the library task so the user can see it
- if (itemsToRefresh.Any(i => i is AggregateFolder))
- {
- LibraryManager.ValidateMediaLibrary(new SimpleProgress<double>(), CancellationToken.None);
- return;
- }
-
foreach (var item in itemsToRefresh)
{
+ if (item is AggregateFolder)
+ {
+ continue;
+ }
+
Logger.Info(item.Name + " (" + item.Path + ") will be refreshed.");
try
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index 85b91ac25..a7b85ad42 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -738,8 +738,7 @@ namespace Emby.Server.Implementations.Library
if (folder.ParentId != rootFolder.Id)
{
folder.ParentId = rootFolder.Id;
- var task = folder.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None);
- Task.WaitAll(task);
+ folder.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None);
}
rootFolder.AddVirtualChild(folder);
@@ -1834,12 +1833,12 @@ namespace Emby.Server.Implementations.Library
/// <param name="updateReason">The update reason.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- public async Task UpdateItem(BaseItem item, ItemUpdateType updateReason, CancellationToken cancellationToken)
+ public void UpdateItem(BaseItem item, ItemUpdateType updateReason, CancellationToken cancellationToken)
{
var locationType = item.LocationType;
if (locationType != LocationType.Remote && locationType != LocationType.Virtual)
{
- await _providerManagerFactory().SaveMetadata(item, updateReason).ConfigureAwait(false);
+ _providerManagerFactory().SaveMetadata(item, updateReason);
}
item.DateLastSaved = DateTime.UtcNow;
@@ -2053,7 +2052,7 @@ namespace Emby.Server.Implementations.Library
return GetNamedView(user, name, null, viewType, sortName, cancellationToken);
}
- public async Task<UserView> GetNamedView(string name,
+ public UserView GetNamedView(string name,
string viewType,
string sortName,
CancellationToken cancellationToken)
@@ -2100,7 +2099,7 @@ namespace Emby.Server.Implementations.Library
if (refresh)
{
- await item.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None).ConfigureAwait(false);
+ item.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None);
_providerManagerFactory().QueueRefresh(item.Id, new MetadataRefreshOptions(_fileSystem)
{
// Not sure why this is necessary but need to figure it out
@@ -2241,7 +2240,7 @@ namespace Emby.Server.Implementations.Library
return item;
}
- public async Task<UserView> GetNamedView(string name,
+ public UserView GetNamedView(string name,
string parentId,
string viewType,
string sortName,
@@ -2294,7 +2293,7 @@ namespace Emby.Server.Implementations.Library
if (!string.Equals(viewType, item.ViewType, StringComparison.OrdinalIgnoreCase))
{
item.ViewType = viewType;
- await item.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false);
+ item.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken);
}
var refresh = isNew || DateTime.UtcNow - item.DateLastRefreshed >= _viewRefreshInterval;
@@ -2822,7 +2821,7 @@ namespace Emby.Server.Implementations.Library
await _providerManagerFactory().SaveImage(item, url, image.Type, imageIndex, CancellationToken.None).ConfigureAwait(false);
- await item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None).ConfigureAwait(false);
+ item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
return item.GetImageInfo(image.Type, imageIndex);
}
@@ -2838,7 +2837,7 @@ namespace Emby.Server.Implementations.Library
// Remove this image to prevent it from retrying over and over
item.RemoveImage(image);
- await item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None).ConfigureAwait(false);
+ item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
throw new InvalidOperationException();
}
diff --git a/Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs b/Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs
index 757e67eb4..4830da8fc 100644
--- a/Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs
+++ b/Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs
@@ -54,7 +54,7 @@ namespace Emby.Server.Implementations.Library
{
cancellationToken.ThrowIfCancellationRequested();
- await AssignTrailers(item, trailers).ConfigureAwait(false);
+ AssignTrailers(item, trailers);
numComplete++;
double percent = numComplete;
@@ -65,7 +65,7 @@ namespace Emby.Server.Implementations.Library
progress.Report(100);
}
- private async Task AssignTrailers(IHasTrailers item, IEnumerable<BaseItem> channelTrailers)
+ private void AssignTrailers(IHasTrailers item, IEnumerable<BaseItem> channelTrailers)
{
if (item is Game)
{
@@ -98,8 +98,7 @@ namespace Emby.Server.Implementations.Library
item.RemoteTrailerIds = trailerIds;
var baseItem = (BaseItem)item;
- await baseItem.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None)
- .ConfigureAwait(false);
+ baseItem.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None);
}
}
}
diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
index cd1264754..82f42c745 100644
--- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
@@ -147,7 +147,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
Items = videos
};
- var isInMixedFolder = resolverResult.Count > 1;
+ var isInMixedFolder = resolverResult.Count > 1 || (parent != null && parent.IsTopParent);
foreach (var video in resolverResult)
{
diff --git a/Emby.Server.Implementations/Library/UserViewManager.cs b/Emby.Server.Implementations/Library/UserViewManager.cs
index 8c9377291..4ee0f553f 100644
--- a/Emby.Server.Implementations/Library/UserViewManager.cs
+++ b/Emby.Server.Implementations/Library/UserViewManager.cs
@@ -102,7 +102,7 @@ namespace Emby.Server.Implementations.Library
if (_config.Configuration.EnableFolderView)
{
var name = _localizationManager.GetLocalizedString("ViewType" + CollectionType.Folders);
- list.Add(await _libraryManager.GetNamedView(name, CollectionType.Folders, string.Empty, cancellationToken).ConfigureAwait(false));
+ list.Add(_libraryManager.GetNamedView(name, CollectionType.Folders, string.Empty, cancellationToken));
}
if (query.IncludeExternalContent)
@@ -117,7 +117,7 @@ namespace Emby.Server.Implementations.Library
if (_config.Configuration.EnableChannelView && channels.Length > 0)
{
- list.Add(await _channelManager.GetInternalChannelFolder(cancellationToken).ConfigureAwait(false));
+ list.Add(_channelManager.GetInternalChannelFolder(cancellationToken));
}
else
{
@@ -126,7 +126,7 @@ namespace Emby.Server.Implementations.Library
if (_liveTvManager.GetEnabledUsers().Select(i => i.Id.ToString("N")).Contains(query.UserId))
{
- list.Add(await _liveTvManager.GetInternalLiveTvFolder(CancellationToken.None).ConfigureAwait(false));
+ list.Add(_liveTvManager.GetInternalLiveTvFolder(CancellationToken.None));
}
}
@@ -158,14 +158,14 @@ namespace Emby.Server.Implementations.Library
.ToArray();
}
- public Task<UserView> GetUserSubView(string name, string parentId, string type, string sortName, CancellationToken cancellationToken)
+ public UserView GetUserSubView(string name, string parentId, string type, string sortName, CancellationToken cancellationToken)
{
var uniqueId = parentId + "subview" + type;
return _libraryManager.GetNamedView(name, parentId, type, sortName, uniqueId, cancellationToken);
}
- public Task<UserView> GetUserSubView(string parentId, string type, string sortName, CancellationToken cancellationToken)
+ public UserView GetUserSubView(string parentId, string type, string sortName, CancellationToken cancellationToken)
{
var name = _localizationManager.GetLocalizedString("ViewType" + type);
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
index 857afa378..ec2704aa0 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -173,11 +173,11 @@ namespace Emby.Server.Implementations.LiveTv
}
}
- public async Task<QueryResult<BaseItem>> GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken)
+ public QueryResult<BaseItem> GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken)
{
var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId);
- var topFolder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false);
+ var topFolder = GetInternalLiveTvFolder(cancellationToken);
var internalQuery = new InternalItemsQuery(user)
{
@@ -565,7 +565,7 @@ namespace Emby.Server.Implementations.LiveTv
}
else if (forceUpdate)
{
- await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false);
+ _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken);
}
await item.RefreshMetadata(new MetadataRefreshOptions(_fileSystem)
@@ -760,7 +760,7 @@ namespace Emby.Server.Implementations.LiveTv
return new Tuple<LiveTvProgram, bool, bool>(item, isNew, isUpdated);
}
- private async Task<Guid> CreateRecordingRecord(RecordingInfo info, string serviceName, Guid parentFolderId, CancellationToken cancellationToken)
+ private Guid CreateRecordingRecord(RecordingInfo info, string serviceName, Guid parentFolderId, CancellationToken cancellationToken)
{
var isNew = false;
@@ -892,7 +892,7 @@ namespace Emby.Server.Implementations.LiveTv
else if (dataChanged || info.DateLastUpdated > recording.DateLastSaved || statusChanged)
{
metadataRefreshMode = MetadataRefreshMode.FullRefresh;
- await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false);
+ _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken);
}
if (info.Status != RecordingStatus.InProgress)
@@ -928,7 +928,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId);
- var topFolder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false);
+ var topFolder = GetInternalLiveTvFolder(cancellationToken);
if (query.OrderBy.Length == 0)
{
@@ -1007,11 +1007,11 @@ namespace Emby.Server.Implementations.LiveTv
return result;
}
- public async Task<QueryResult<BaseItem>> GetRecommendedProgramsInternal(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken)
+ public QueryResult<BaseItem> GetRecommendedProgramsInternal(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken)
{
var user = _userManager.GetUserById(query.UserId);
- var topFolder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false);
+ var topFolder = GetInternalLiveTvFolder(cancellationToken);
var internalQuery = new InternalItemsQuery(user)
{
@@ -1072,11 +1072,11 @@ namespace Emby.Server.Implementations.LiveTv
return result;
}
- public async Task<QueryResult<BaseItemDto>> GetRecommendedPrograms(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken)
+ public QueryResult<BaseItemDto> GetRecommendedPrograms(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken)
{
RemoveFields(options);
- var internalResult = await GetRecommendedProgramsInternal(query, options, cancellationToken).ConfigureAwait(false);
+ var internalResult = GetRecommendedProgramsInternal(query, options, cancellationToken);
var user = _userManager.GetUserById(query.UserId);
@@ -1302,7 +1302,7 @@ namespace Emby.Server.Implementations.LiveTv
var list = new List<LiveTvChannel>();
var numComplete = 0;
- var parentFolder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false);
+ var parentFolder = GetInternalLiveTvFolder(cancellationToken);
var parentFolderId = parentFolder.Id;
foreach (var channelInfo in allChannelsList)
@@ -1425,7 +1425,7 @@ namespace Emby.Server.Implementations.LiveTv
// TODO: Do this in bulk
foreach (var program in updatedPrograms)
{
- await _libraryManager.UpdateItem(program, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false);
+ _libraryManager.UpdateItem(program, ItemUpdateType.MetadataImport, cancellationToken);
}
currentChannel.IsMovie = isMovie;
@@ -1434,7 +1434,7 @@ namespace Emby.Server.Implementations.LiveTv
currentChannel.IsKids = isKids;
currentChannel.IsSeries = iSSeries;
- await currentChannel.UpdateToRepository(ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false);
+ currentChannel.UpdateToRepository(ItemUpdateType.MetadataImport, cancellationToken);
}
catch (OperationCanceledException)
{
@@ -1549,9 +1549,8 @@ namespace Emby.Server.Implementations.LiveTv
var results = await Task.WhenAll(tasks).ConfigureAwait(false);
- var recordingTasks = results.SelectMany(i => i.ToList()).Select(i => CreateRecordingRecord(i.Item1, i.Item2.Name, internalLiveTvFolderId, cancellationToken));
-
- var idList = await Task.WhenAll(recordingTasks).ConfigureAwait(false);
+ var idList = results.SelectMany(i => i.ToList()).Select(i => CreateRecordingRecord(i.Item1, i.Item2.Name, internalLiveTvFolderId, cancellationToken))
+ .ToArray();
await CleanDatabaseInternal(idList, new[] { typeof(LiveTvVideoRecording).Name, typeof(LiveTvAudioRecording).Name }, new SimpleProgress<double>(), cancellationToken).ConfigureAwait(false);
@@ -1726,7 +1725,7 @@ namespace Emby.Server.Implementations.LiveTv
return new QueryResult<BaseItem>();
}
- var folder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false);
+ var folder = GetInternalLiveTvFolder(cancellationToken);
// TODO: Figure out how to merge emby recordings + service recordings
if (_services.Length == 1)
@@ -2143,18 +2142,6 @@ namespace Emby.Server.Implementations.LiveTv
};
}
- public Task OnRecordingFileDeleted(BaseItem recording)
- {
- var service = GetService(recording);
-
- if (service is EmbyTV.EmbyTV)
- {
- return service.DeleteRecordingAsync(GetItemExternalId(recording), CancellationToken.None);
- }
-
- return Task.FromResult(true);
- }
-
public async Task DeleteRecording(string recordingId)
{
var recording = await GetInternalRecording(recordingId, CancellationToken.None).ConfigureAwait(false);
@@ -2171,13 +2158,17 @@ namespace Emby.Server.Implementations.LiveTv
{
var service = GetService(recording.ServiceName);
- try
- {
- await service.DeleteRecordingAsync(GetItemExternalId(recording), CancellationToken.None).ConfigureAwait(false);
- }
- catch (ResourceNotFoundException)
+ if (service != null)
{
+ // handle the service being uninstalled and the item hanging around in the database
+ try
+ {
+ await service.DeleteRecordingAsync(GetItemExternalId(recording), CancellationToken.None).ConfigureAwait(false);
+ }
+ catch (ResourceNotFoundException)
+ {
+ }
}
_lastRecordingRefreshTime = DateTime.MinValue;
@@ -2387,7 +2378,7 @@ namespace Emby.Server.Implementations.LiveTv
MinEndDate = now,
Limit = channelIds.Length,
OrderBy = new[] { new Tuple<string, SortOrder>(ItemSortBy.StartDate, SortOrder.Ascending) },
- TopParentIds = new[] { GetInternalLiveTvFolder(CancellationToken.None).Result.Id.ToString("N") },
+ TopParentIds = new[] { GetInternalLiveTvFolder(CancellationToken.None).Id.ToString("N") },
DtoOptions = options
}) : new List<BaseItem>();
@@ -2910,11 +2901,11 @@ namespace Emby.Server.Implementations.LiveTv
return service.ResetTuner(parts[1], cancellationToken);
}
- public async Task<BaseItemDto> GetLiveTvFolder(string userId, CancellationToken cancellationToken)
+ public BaseItemDto GetLiveTvFolder(string userId, CancellationToken cancellationToken)
{
var user = string.IsNullOrEmpty(userId) ? null : _userManager.GetUserById(userId);
- var folder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false);
+ var folder = GetInternalLiveTvFolder(cancellationToken);
return _dtoService.GetBaseItemDto(folder, new DtoOptions(), user);
}
@@ -2930,10 +2921,10 @@ namespace Emby.Server.Implementations.LiveTv
options.Fields = fields.ToArray(fields.Count);
}
- public async Task<Folder> GetInternalLiveTvFolder(CancellationToken cancellationToken)
+ public Folder GetInternalLiveTvFolder(CancellationToken cancellationToken)
{
var name = _localization.GetLocalizedString("ViewTypeLiveTV");
- return await _libraryManager.GetNamedView(name, CollectionType.LiveTv, name, cancellationToken).ConfigureAwait(false);
+ return _libraryManager.GetNamedView(name, CollectionType.LiveTv, name, cancellationToken);
}
public async Task<TunerHostInfo> SaveTunerHost(TunerHostInfo info, bool dataSourceChanged = true)
diff --git a/Emby.Server.Implementations/Playlists/PlaylistManager.cs b/Emby.Server.Implementations/Playlists/PlaylistManager.cs
index 87832e7dd..f268e9c0c 100644
--- a/Emby.Server.Implementations/Playlists/PlaylistManager.cs
+++ b/Emby.Server.Implementations/Playlists/PlaylistManager.cs
@@ -209,7 +209,7 @@ namespace Emby.Server.Implementations.Playlists
newList.AddRange(list);
playlist.LinkedChildren = newList.ToArray(newList.Count);
- await playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
_providerManager.QueueRefresh(playlist.Id, new MetadataRefreshOptions(_fileSystem)
{
@@ -237,7 +237,7 @@ namespace Emby.Server.Implementations.Playlists
.Select(i => i.Item1)
.ToArray();
- await playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
_providerManager.QueueRefresh(playlist.Id, new MetadataRefreshOptions(_fileSystem)
{
@@ -281,7 +281,7 @@ namespace Emby.Server.Implementations.Playlists
playlist.LinkedChildren = newList.ToArray(newList.Count);
- await playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
}
public Folder GetPlaylistsFolder(string userId)
diff --git a/MediaBrowser.Api/ChannelService.cs b/MediaBrowser.Api/ChannelService.cs
index d64bf7ec7..2e8eb9e07 100644
--- a/MediaBrowser.Api/ChannelService.cs
+++ b/MediaBrowser.Api/ChannelService.cs
@@ -101,7 +101,7 @@ namespace MediaBrowser.Api
[ApiMember(Name = "Fields", Description = "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string Fields { get; set; }
-
+
/// <summary>
/// Gets the filters.
/// </summary>
@@ -160,7 +160,7 @@ namespace MediaBrowser.Api
[ApiMember(Name = "ChannelIds", Description = "Optional. Specify one or more channel id's, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string ChannelIds { get; set; }
-
+
/// <summary>
/// Gets the filters.
/// </summary>
@@ -177,7 +177,7 @@ namespace MediaBrowser.Api
return val.Split(',').Select(v => (ItemFilter)Enum.Parse(typeof(ItemFilter), v, true));
}
}
-
+
[Route("/Channels/Folder", "GET", Summary = "Gets the users channel folder, along with configured images")]
public class GetChannelFolder : IReturn<BaseItemDto>
{
@@ -209,9 +209,9 @@ namespace MediaBrowser.Api
return ToOptimizedResult(result);
}
- public async Task<object> Get(GetChannelFolder request)
+ public object Get(GetChannelFolder request)
{
- return ToOptimizedResult(await _channelManager.GetChannelFolder(request.UserId, CancellationToken.None).ConfigureAwait(false));
+ return ToOptimizedResult(_channelManager.GetChannelFolder(request.UserId, CancellationToken.None));
}
public async Task<object> Get(GetChannels request)
diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs
index f8481517d..72e4fe224 100644
--- a/MediaBrowser.Api/Images/ImageService.cs
+++ b/MediaBrowser.Api/Images/ImageService.cs
@@ -471,9 +471,7 @@ namespace MediaBrowser.Api.Images
var item = _userManager.GetUserById(userId);
- var task = item.DeleteImage(request.Type, request.Index ?? 0);
-
- Task.WaitAll(task);
+ item.DeleteImage(request.Type, request.Index ?? 0);
}
/// <summary>
@@ -484,9 +482,7 @@ namespace MediaBrowser.Api.Images
{
var item = _libraryManager.GetItemById(request.Id);
- var task = item.DeleteImage(request.Type, request.Index ?? 0);
-
- Task.WaitAll(task);
+ item.DeleteImage(request.Type, request.Index ?? 0);
}
/// <summary>
@@ -497,9 +493,7 @@ namespace MediaBrowser.Api.Images
{
var item = _libraryManager.GetItemById(request.Id);
- var task = UpdateItemIndex(item, request.Type, request.Index, request.NewIndex);
-
- Task.WaitAll(task);
+ UpdateItemIndex(item, request.Type, request.Index, request.NewIndex);
}
/// <summary>
@@ -510,9 +504,9 @@ namespace MediaBrowser.Api.Images
/// <param name="currentIndex">Index of the current.</param>
/// <param name="newIndex">The new index.</param>
/// <returns>Task.</returns>
- private Task UpdateItemIndex(IHasMetadata item, ImageType type, int currentIndex, int newIndex)
+ private void UpdateItemIndex(IHasMetadata item, ImageType type, int currentIndex, int newIndex)
{
- return item.SwapImages(type, currentIndex, newIndex);
+ item.SwapImages(type, currentIndex, newIndex);
}
/// <summary>
@@ -558,7 +552,7 @@ namespace MediaBrowser.Api.Images
var supportedImageEnhancers = request.EnableImageEnhancers ? _imageProcessor.GetSupportedEnhancers(item, request.Type) : new List<IImageEnhancer>();
- var cropwhitespace = request.Type == ImageType.Logo ||
+ var cropwhitespace = request.Type == ImageType.Logo ||
request.Type == ImageType.Art
|| (request.Type == ImageType.Primary && item is LiveTvChannel);
@@ -733,7 +727,7 @@ namespace MediaBrowser.Api.Images
await _providerManager.SaveImage(entity, memoryStream, mimeType, imageType, null, CancellationToken.None).ConfigureAwait(false);
- await entity.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None).ConfigureAwait(false);
+ entity.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
}
}
}
diff --git a/MediaBrowser.Api/Images/RemoteImageService.cs b/MediaBrowser.Api/Images/RemoteImageService.cs
index 3512a526b..413762a5c 100644
--- a/MediaBrowser.Api/Images/RemoteImageService.cs
+++ b/MediaBrowser.Api/Images/RemoteImageService.cs
@@ -84,7 +84,7 @@ namespace MediaBrowser.Api.Images
}
[Route("/Items/{Id}/RemoteImages/Download", "POST", Summary = "Downloads a remote image for an item")]
- [Authenticated(Roles="Admin")]
+ [Authenticated(Roles = "Admin")]
public class DownloadRemoteImage : BaseDownloadRemoteImage
{
/// <summary>
@@ -207,7 +207,7 @@ namespace MediaBrowser.Api.Images
{
await _providerManager.SaveImage(item, request.ImageUrl, request.Type, null, CancellationToken.None).ConfigureAwait(false);
- await item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None).ConfigureAwait(false);
+ item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
}
/// <summary>
@@ -232,9 +232,9 @@ namespace MediaBrowser.Api.Images
contentPath = _fileSystem.ReadAllText(pointerCachePath);
if (_fileSystem.FileExists(contentPath))
- {
- return await ResultFactory.GetStaticFileResult(Request, contentPath).ConfigureAwait(false);
- }
+ {
+ return await ResultFactory.GetStaticFileResult(Request, contentPath).ConfigureAwait(false);
+ }
}
catch (FileNotFoundException)
{
@@ -273,7 +273,7 @@ namespace MediaBrowser.Api.Images
var fullCachePath = GetFullCachePath(urlHash + "." + ext);
- _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(fullCachePath));
+ _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(fullCachePath));
using (var stream = result.Content)
{
using (var filestream = _fileSystem.GetFileStream(fullCachePath, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read, true))
@@ -282,7 +282,7 @@ namespace MediaBrowser.Api.Images
}
}
- _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(pointerCachePath));
+ _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(pointerCachePath));
_fileSystem.WriteAllText(pointerCachePath, fullCachePath);
}
diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs
index 53a67ff71..90cf2d1d1 100644
--- a/MediaBrowser.Api/ItemUpdateService.cs
+++ b/MediaBrowser.Api/ItemUpdateService.cs
@@ -194,13 +194,6 @@ namespace MediaBrowser.Api
public void Post(UpdateItem request)
{
- var task = UpdateItem(request);
-
- Task.WaitAll(task);
- }
-
- private async Task UpdateItem(UpdateItem request)
- {
var item = _libraryManager.GetItemById(request.ItemId);
var newLockData = request.LockData ?? false;
@@ -216,7 +209,7 @@ namespace MediaBrowser.Api
item.OnMetadataChanged();
- await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
if (isLockedChanged && item.IsFolder)
{
@@ -225,7 +218,7 @@ namespace MediaBrowser.Api
foreach (var child in folder.GetRecursiveChildren())
{
child.IsLocked = newLockData;
- await child.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ child.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
}
}
}
diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs
index 36bcee913..f46c3e50f 100644
--- a/MediaBrowser.Api/LiveTv/LiveTvService.cs
+++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs
@@ -892,11 +892,11 @@ namespace MediaBrowser.Api.LiveTv
return ToOptimizedSerializedResultUsingCache(info);
}
- public async Task<object> Get(GetChannels request)
+ public object Get(GetChannels request)
{
var options = GetDtoOptions(_authContext, request);
- var channelResult = await _liveTvManager.GetInternalChannels(new LiveTvChannelQuery
+ var channelResult = _liveTvManager.GetInternalChannels(new LiveTvChannelQuery
{
ChannelType = request.Type,
UserId = request.UserId,
@@ -915,7 +915,7 @@ namespace MediaBrowser.Api.LiveTv
SortOrder = request.SortOrder ?? SortOrder.Ascending,
AddCurrentProgram = request.AddCurrentProgram
- }, options, CancellationToken.None).ConfigureAwait(false);
+ }, options, CancellationToken.None);
var user = string.IsNullOrEmpty(request.UserId) ? null : _userManager.GetUserById(request.UserId);
@@ -958,9 +958,9 @@ namespace MediaBrowser.Api.LiveTv
return ToOptimizedSerializedResultUsingCache(result);
}
- public async Task<object> Get(GetLiveTvFolder request)
+ public object Get(GetLiveTvFolder request)
{
- return ToOptimizedResult(await _liveTvManager.GetLiveTvFolder(request.UserId, CancellationToken.None).ConfigureAwait(false));
+ return ToOptimizedResult(_liveTvManager.GetLiveTvFolder(request.UserId, CancellationToken.None));
}
public async Task<object> Get(GetPrograms request)
@@ -1020,7 +1020,7 @@ namespace MediaBrowser.Api.LiveTv
return ToOptimizedResult(result);
}
- public async Task<object> Get(GetRecommendedPrograms request)
+ public object Get(GetRecommendedPrograms request)
{
var query = new RecommendedProgramQuery
{
@@ -1036,7 +1036,7 @@ namespace MediaBrowser.Api.LiveTv
EnableTotalRecordCount = request.EnableTotalRecordCount
};
- var result = await _liveTvManager.GetRecommendedPrograms(query, GetDtoOptions(_authContext, request), CancellationToken.None).ConfigureAwait(false);
+ var result = _liveTvManager.GetRecommendedPrograms(query, GetDtoOptions(_authContext, request), CancellationToken.None);
return ToOptimizedResult(result);
}
diff --git a/MediaBrowser.Api/VideosService.cs b/MediaBrowser.Api/VideosService.cs
index 3bd0497f7..3f840dbfa 100644
--- a/MediaBrowser.Api/VideosService.cs
+++ b/MediaBrowser.Api/VideosService.cs
@@ -110,35 +110,21 @@ namespace MediaBrowser.Api
public void Delete(DeleteAlternateSources request)
{
- var task = DeleteAsync(request);
-
- Task.WaitAll(task);
- }
-
- public async Task DeleteAsync(DeleteAlternateSources request)
- {
var video = (Video)_libraryManager.GetItemById(request.Id);
foreach (var link in video.GetLinkedAlternateVersions())
{
link.PrimaryVersionId = null;
- await link.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ link.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
}
video.LinkedAlternateVersions = Video.EmptyLinkedChildArray;
- await video.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ video.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
}
public void Post(MergeVersions request)
{
- var task = PostAsync(request);
-
- Task.WaitAll(task);
- }
-
- public async Task PostAsync(MergeVersions request)
- {
var items = request.Ids.Split(',')
.Select(i => _libraryManager.GetItemById(i))
.OfType<Video>()
@@ -162,19 +148,19 @@ namespace MediaBrowser.Api
if (primaryVersion == null)
{
primaryVersion = items.OrderBy(i =>
- {
- if (i.Video3DFormat.HasValue)
{
- return 1;
- }
-
- if (i.VideoType != Model.Entities.VideoType.VideoFile)
- {
- return 1;
- }
-
- return 0;
- })
+ if (i.Video3DFormat.HasValue)
+ {
+ return 1;
+ }
+
+ if (i.VideoType != Model.Entities.VideoType.VideoFile)
+ {
+ return 1;
+ }
+
+ return 0;
+ })
.ThenByDescending(i =>
{
var stream = i.GetDefaultVideoStream();
@@ -190,7 +176,7 @@ namespace MediaBrowser.Api
{
item.PrimaryVersionId = primaryVersion.Id.ToString("N");
- await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
list.Add(new LinkedChild
{
@@ -201,7 +187,7 @@ namespace MediaBrowser.Api
primaryVersion.LinkedAlternateVersions = list.ToArray();
- await primaryVersion.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ primaryVersion.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
}
}
}
diff --git a/MediaBrowser.Controller/Channels/IChannelManager.cs b/MediaBrowser.Controller/Channels/IChannelManager.cs
index 46e55a21c..37fc892b3 100644
--- a/MediaBrowser.Controller/Channels/IChannelManager.cs
+++ b/MediaBrowser.Controller/Channels/IChannelManager.cs
@@ -117,14 +117,13 @@ namespace MediaBrowser.Controller.Channels
/// </summary>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>BaseItemDto.</returns>
- Task<Folder> GetInternalChannelFolder(CancellationToken cancellationToken);
+ Folder GetInternalChannelFolder(CancellationToken cancellationToken);
/// <summary>
/// Gets the channel folder.
/// </summary>
/// <param name="userId">The user identifier.</param>
/// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>BaseItemDto.</returns>
- Task<BaseItemDto> GetChannelFolder(string userId, CancellationToken cancellationToken);
+ BaseItemDto GetChannelFolder(string userId, CancellationToken cancellationToken);
}
}
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 502ba6c60..46c037a44 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -1281,8 +1281,8 @@ namespace MediaBrowser.Controller.Entities
{
var subOptions = new MetadataRefreshOptions(options);
- if (!i.ExtraType.HasValue ||
- i.ExtraType.Value != Model.Entities.ExtraType.ThemeSong ||
+ if (!i.ExtraType.HasValue ||
+ i.ExtraType.Value != Model.Entities.ExtraType.ThemeSong ||
i.OwnerId != ownerId ||
i.ParentId != Guid.Empty)
{
@@ -1356,14 +1356,20 @@ namespace MediaBrowser.Controller.Entities
internal virtual bool IsValidFromResolver(BaseItem newItem)
{
- var current = this;
+ return true;
+ }
- if (current.IsInMixedFolder != newItem.IsInMixedFolder)
+ internal virtual ItemUpdateType UpdateFromResolvedItem(BaseItem newItem)
+ {
+ var updateType = ItemUpdateType.None;
+
+ if (IsInMixedFolder != newItem.IsInMixedFolder)
{
- return false;
+ IsInMixedFolder = newItem.IsInMixedFolder;
+ updateType |= ItemUpdateType.MetadataImport;
}
- return true;
+ return updateType;
}
public void AfterMetadataRefresh()
@@ -1966,14 +1972,14 @@ namespace MediaBrowser.Controller.Entities
/// <param name="type">The type.</param>
/// <param name="index">The index.</param>
/// <returns>Task.</returns>
- public Task DeleteImage(ImageType type, int index)
+ public void DeleteImage(ImageType type, int index)
{
var info = GetImageInfo(type, index);
if (info == null)
{
// Nothing to do
- return Task.FromResult(true);
+ return;
}
// Remove it from the item
@@ -1984,7 +1990,7 @@ namespace MediaBrowser.Controller.Entities
FileSystem.DeleteFile(info.Path);
}
- return UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
+ UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
}
public void RemoveImage(ItemImageInfo image)
@@ -1997,9 +2003,9 @@ namespace MediaBrowser.Controller.Entities
ImageInfos = ImageInfos.Except(deletedImages).ToArray();
}
- public virtual Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken)
+ public virtual void UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken)
{
- return LibraryManager.UpdateItem(this, updateReason, cancellationToken);
+ LibraryManager.UpdateItem(this, updateReason, cancellationToken);
}
/// <summary>
@@ -2209,7 +2215,7 @@ namespace MediaBrowser.Controller.Entities
return type == ImageType.Backdrop || type == ImageType.Screenshot || type == ImageType.Chapter;
}
- public Task SwapImages(ImageType type, int index1, int index2)
+ public void SwapImages(ImageType type, int index1, int index2)
{
if (!AllowsMultipleImages(type))
{
@@ -2222,13 +2228,13 @@ namespace MediaBrowser.Controller.Entities
if (info1 == null || info2 == null)
{
// Nothing to do
- return Task.FromResult(true);
+ return;
}
if (!info1.IsLocalFile || !info2.IsLocalFile)
{
// TODO: Not supported yet
- return Task.FromResult(true);
+ return;
}
var path1 = info1.Path;
@@ -2240,7 +2246,7 @@ namespace MediaBrowser.Controller.Entities
info1.DateModified = FileSystem.GetLastWriteTimeUtc(info1.Path);
info2.DateModified = FileSystem.GetLastWriteTimeUtc(info2.Path);
- return UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
+ UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
}
public virtual bool IsPlayed(User user)
@@ -2526,15 +2532,6 @@ namespace MediaBrowser.Controller.Entities
return LibraryManager.DeleteItem(this, options);
}
- public virtual Task OnFileDeleted()
- {
- // Remove from database
- return Delete(new DeleteOptions
- {
- DeleteFileLocation = false
- });
- }
-
public virtual List<ExternalUrl> GetRelatedUrls()
{
return new List<ExternalUrl>();
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 6d88f7015..ce7145a79 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -328,11 +328,6 @@ namespace MediaBrowser.Controller.Entities
return dictionary;
}
- private bool IsValidFromResolver(BaseItem current, BaseItem newItem)
- {
- return current.IsValidFromResolver(newItem);
- }
-
protected override void TriggerOnRefreshStart()
{
}
@@ -421,10 +416,15 @@ namespace MediaBrowser.Controller.Entities
{
BaseItem currentChild;
- if (currentChildren.TryGetValue(child.Id, out currentChild) && IsValidFromResolver(currentChild, child))
+ if (currentChildren.TryGetValue(child.Id, out currentChild) && currentChild.IsValidFromResolver(child))
{
validChildren.Add(currentChild);
+ if (currentChild.UpdateFromResolvedItem(child) > ItemUpdateType.None)
+ {
+ currentChild.UpdateToRepository(ItemUpdateType.MetadataImport, cancellationToken);
+ }
+
continue;
}
@@ -542,7 +542,6 @@ namespace MediaBrowser.Controller.Entities
if (validChildrenNeedGeneration)
{
validChildren = Children.ToList();
- validChildrenNeedGeneration = false;
}
await RefreshMetadataRecursive(validChildren, refreshOptions, recursive, innerProgress, cancellationToken);
diff --git a/MediaBrowser.Controller/Entities/IHasMetadata.cs b/MediaBrowser.Controller/Entities/IHasMetadata.cs
index 4146686b2..b7d31b4d6 100644
--- a/MediaBrowser.Controller/Entities/IHasMetadata.cs
+++ b/MediaBrowser.Controller/Entities/IHasMetadata.cs
@@ -151,11 +151,7 @@ namespace MediaBrowser.Controller.Entities
/// <summary>
/// Swaps the images.
/// </summary>
- /// <param name="type">The type.</param>
- /// <param name="index1">The index1.</param>
- /// <param name="index2">The index2.</param>
- /// <returns>Task.</returns>
- Task SwapImages(ImageType type, int index1, int index2);
+ void SwapImages(ImageType type, int index1, int index2);
/// <summary>
/// Gets or sets the primary image path.
@@ -249,10 +245,7 @@ namespace MediaBrowser.Controller.Entities
/// <summary>
/// Updates to repository.
/// </summary>
- /// <param name="updateReason">The update reason.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken);
+ void UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken);
/// <summary>
/// Sets the image.
diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs
index 36bbf6886..821327b7f 100644
--- a/MediaBrowser.Controller/Entities/User.cs
+++ b/MediaBrowser.Controller/Entities/User.cs
@@ -235,10 +235,9 @@ namespace MediaBrowser.Controller.Entities
}, CancellationToken.None);
}
- public override Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken)
+ public override void UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken)
{
UserManager.UpdateUser(this);
- return Task.FromResult(true);
}
/// <summary>
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
index 43adc4af6..acc452fbc 100644
--- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs
+++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
@@ -78,26 +78,26 @@ namespace MediaBrowser.Controller.Entities
case SpecialFolder.LiveTvChannels:
{
- var result = await _liveTvManager.GetInternalChannels(new LiveTvChannelQuery
+ var result = _liveTvManager.GetInternalChannels(new LiveTvChannelQuery
{
UserId = query.User.Id.ToString("N"),
Limit = query.Limit,
StartIndex = query.StartIndex
- }, new DtoOptions(), CancellationToken.None).ConfigureAwait(false);
+ }, new DtoOptions(), CancellationToken.None);
return GetResult(result);
}
case SpecialFolder.LiveTvNowPlaying:
{
- var result = await _liveTvManager.GetRecommendedProgramsInternal(new RecommendedProgramQuery
+ var result = _liveTvManager.GetRecommendedProgramsInternal(new RecommendedProgramQuery
{
UserId = query.User.Id.ToString("N"),
Limit = query.Limit,
IsAiring = true
- }, new Dto.DtoOptions(), CancellationToken.None).ConfigureAwait(false);
+ }, new Dto.DtoOptions(), CancellationToken.None);
return GetResult(result);
}
@@ -142,22 +142,22 @@ namespace MediaBrowser.Controller.Entities
return GetResult(user.RootFolder.GetChildren(user, true), queryParent, query);
case CollectionType.Playlists:
- return GetPlaylistsView(queryParent, user, query);
+ return GetPlaylistsView(queryParent, user, query);
case CollectionType.BoxSets:
return GetBoxsetView(queryParent, user, query);
case CollectionType.TvShows:
- return await GetTvView(queryParent, user, query).ConfigureAwait(false);
+ return GetTvView(queryParent, user, query);
case CollectionType.Movies:
- return await GetMovieFolders(queryParent, user, query).ConfigureAwait(false);
+ return GetMovieFolders(queryParent, user, query);
case SpecialFolder.TvShowSeries:
return GetTvSeries(queryParent, user, query);
case SpecialFolder.TvGenres:
- return await GetTvGenres(queryParent, user, query).ConfigureAwait(false);
+ return GetTvGenres(queryParent, user, query);
case SpecialFolder.TvGenre:
return GetTvGenreItems(queryParent, displayParent, user, query);
@@ -178,10 +178,10 @@ namespace MediaBrowser.Controller.Entities
return GetMovieLatest(queryParent, user, query);
case SpecialFolder.MovieGenres:
- return await GetMovieGenres(queryParent, user, query).ConfigureAwait(false);
+ return GetMovieGenres(queryParent, user, query);
case SpecialFolder.MovieGenre:
- return GetMovieGenreItems(queryParent, displayParent, user, query);
+ return GetMovieGenreItems(queryParent, displayParent, user, query);
case SpecialFolder.MovieResume:
return GetMovieResume(queryParent, user, query);
@@ -199,7 +199,7 @@ namespace MediaBrowser.Controller.Entities
return GetFavoriteSeries(queryParent, user, query);
case CollectionType.Music:
- return await GetMusicFolders(queryParent, user, query).ConfigureAwait(false);
+ return GetMusicFolders(queryParent, user, query);
case SpecialFolder.MusicGenres:
return GetMusicGenres(queryParent, user, query);
@@ -223,7 +223,7 @@ namespace MediaBrowser.Controller.Entities
return GetMusicSongs(queryParent, user, query);
case SpecialFolder.MusicFavorites:
- return await GetMusicFavorites(queryParent, user, query).ConfigureAwait(false);
+ return GetMusicFavorites(queryParent, user, query);
case SpecialFolder.MusicFavoriteAlbums:
return GetFavoriteAlbums(queryParent, user, query);
@@ -245,7 +245,7 @@ namespace MediaBrowser.Controller.Entities
}
}
- private async Task<QueryResult<BaseItem>> GetMusicFolders(Folder parent, User user, InternalItemsQuery query)
+ private QueryResult<BaseItem> GetMusicFolders(Folder parent, User user, InternalItemsQuery query)
{
if (query.Recursive)
{
@@ -262,25 +262,25 @@ namespace MediaBrowser.Controller.Entities
var list = new List<BaseItem>();
- list.Add(await GetUserView(SpecialFolder.MusicLatest, "0", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicPlaylists, "1", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicAlbums, "2", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicAlbumArtists, "3", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicArtists, "4", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicSongs, "5", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicGenres, "6", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicFavorites, "7", parent).ConfigureAwait(false));
+ list.Add(GetUserView(SpecialFolder.MusicLatest, "0", parent));
+ list.Add(GetUserView(SpecialFolder.MusicPlaylists, "1", parent));
+ list.Add(GetUserView(SpecialFolder.MusicAlbums, "2", parent));
+ list.Add(GetUserView(SpecialFolder.MusicAlbumArtists, "3", parent));
+ list.Add(GetUserView(SpecialFolder.MusicArtists, "4", parent));
+ list.Add(GetUserView(SpecialFolder.MusicSongs, "5", parent));
+ list.Add(GetUserView(SpecialFolder.MusicGenres, "6", parent));
+ list.Add(GetUserView(SpecialFolder.MusicFavorites, "7", parent));
return GetResult(list, parent, query);
}
- private async Task<QueryResult<BaseItem>> GetMusicFavorites(Folder parent, User user, InternalItemsQuery query)
+ private QueryResult<BaseItem> GetMusicFavorites(Folder parent, User user, InternalItemsQuery query)
{
var list = new List<BaseItem>();
- list.Add(await GetUserView(SpecialFolder.MusicFavoriteAlbums, "0", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicFavoriteArtists, "1", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicFavoriteSongs, "2", parent).ConfigureAwait(false));
+ list.Add(GetUserView(SpecialFolder.MusicFavoriteAlbums, "0", parent));
+ list.Add(GetUserView(SpecialFolder.MusicFavoriteArtists, "1", parent));
+ list.Add(GetUserView(SpecialFolder.MusicFavoriteSongs, "2", parent));
return GetResult(list, parent, query);
}
@@ -426,7 +426,7 @@ namespace MediaBrowser.Controller.Entities
return 50;
}
- private async Task<QueryResult<BaseItem>> GetMovieFolders(Folder parent, User user, InternalItemsQuery query)
+ private QueryResult<BaseItem> GetMovieFolders(Folder parent, User user, InternalItemsQuery query)
{
if (query.Recursive)
{
@@ -443,12 +443,12 @@ namespace MediaBrowser.Controller.Entities
var list = new List<BaseItem>();
- list.Add(await GetUserView(SpecialFolder.MovieResume, "0", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MovieLatest, "1", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MovieMovies, "2", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MovieCollections, "3", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MovieFavorites, "4", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MovieGenres, "5", parent).ConfigureAwait(false));
+ list.Add(GetUserView(SpecialFolder.MovieResume, "0", parent));
+ list.Add(GetUserView(SpecialFolder.MovieLatest, "1", parent));
+ list.Add(GetUserView(SpecialFolder.MovieMovies, "2", parent));
+ list.Add(GetUserView(SpecialFolder.MovieCollections, "3", parent));
+ list.Add(GetUserView(SpecialFolder.MovieFavorites, "4", parent));
+ list.Add(GetUserView(SpecialFolder.MovieGenres, "5", parent));
return GetResult(list, parent, query);
}
@@ -538,9 +538,9 @@ namespace MediaBrowser.Controller.Entities
};
}
- private async Task<QueryResult<BaseItem>> GetMovieGenres(Folder parent, User user, InternalItemsQuery query)
+ private QueryResult<BaseItem> GetMovieGenres(Folder parent, User user, InternalItemsQuery query)
{
- var tasks = parent.QueryRecursive(new InternalItemsQuery(user)
+ var genres = parent.QueryRecursive(new InternalItemsQuery(user)
{
IncludeItemTypes = new[] { typeof(Movie).Name },
Recursive = true,
@@ -566,8 +566,6 @@ namespace MediaBrowser.Controller.Entities
.Where(i => i != null)
.Select(i => GetUserView(i.Name, SpecialFolder.MovieGenre, i.SortName, parent));
- var genres = await Task.WhenAll(tasks).ConfigureAwait(false);
-
return GetResult(genres, parent, query);
}
@@ -598,7 +596,7 @@ namespace MediaBrowser.Controller.Entities
return _libraryManager.GetItemsResult(query);
}
- private async Task<QueryResult<BaseItem>> GetTvView(Folder parent, User user, InternalItemsQuery query)
+ private QueryResult<BaseItem> GetTvView(Folder parent, User user, InternalItemsQuery query)
{
if (query.Recursive)
{
@@ -615,13 +613,13 @@ namespace MediaBrowser.Controller.Entities
var list = new List<BaseItem>();
- list.Add(await GetUserView(SpecialFolder.TvResume, "0", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.TvNextUp, "1", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.TvLatest, "2", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.TvShowSeries, "3", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.TvFavoriteSeries, "4", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.TvFavoriteEpisodes, "5", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.TvGenres, "6", parent).ConfigureAwait(false));
+ list.Add(GetUserView(SpecialFolder.TvResume, "0", parent));
+ list.Add(GetUserView(SpecialFolder.TvNextUp, "1", parent));
+ list.Add(GetUserView(SpecialFolder.TvLatest, "2", parent));
+ list.Add(GetUserView(SpecialFolder.TvShowSeries, "3", parent));
+ list.Add(GetUserView(SpecialFolder.TvFavoriteSeries, "4", parent));
+ list.Add(GetUserView(SpecialFolder.TvFavoriteEpisodes, "5", parent));
+ list.Add(GetUserView(SpecialFolder.TvGenres, "6", parent));
return GetResult(list, parent, query);
}
@@ -679,9 +677,9 @@ namespace MediaBrowser.Controller.Entities
return _libraryManager.GetItemsResult(query);
}
- private async Task<QueryResult<BaseItem>> GetTvGenres(Folder parent, User user, InternalItemsQuery query)
+ private QueryResult<BaseItem> GetTvGenres(Folder parent, User user, InternalItemsQuery query)
{
- var tasks = parent.QueryRecursive(new InternalItemsQuery(user)
+ var genres = parent.QueryRecursive(new InternalItemsQuery(user)
{
IncludeItemTypes = new[] { typeof(Series).Name },
Recursive = true,
@@ -707,8 +705,6 @@ namespace MediaBrowser.Controller.Entities
.Where(i => i != null)
.Select(i => GetUserView(i.Name, SpecialFolder.TvGenre, i.SortName, parent));
- var genres = await Task.WhenAll(tasks).ConfigureAwait(false);
-
return GetResult(genres, parent, query);
}
@@ -1740,18 +1736,18 @@ namespace MediaBrowser.Controller.Entities
var list = new List<BaseItem>();
//list.Add(await GetUserSubView(SpecialFolder.LiveTvNowPlaying, user, "0", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.LiveTvChannels, string.Empty, user.RootFolder).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.LiveTvRecordingGroups, string.Empty, user.RootFolder).ConfigureAwait(false));
+ list.Add(GetUserView(SpecialFolder.LiveTvChannels, string.Empty, user.RootFolder));
+ list.Add(GetUserView(SpecialFolder.LiveTvRecordingGroups, string.Empty, user.RootFolder));
return GetResult(list, queryParent, query);
}
- private Task<UserView> GetUserView(string name, string type, string sortName, BaseItem parent)
+ private UserView GetUserView(string name, string type, string sortName, BaseItem parent)
{
return _userViewManager.GetUserSubView(name, parent.Id.ToString("N"), type, sortName, CancellationToken.None);
}
- private Task<UserView> GetUserView(string type, string sortName, BaseItem parent)
+ private UserView GetUserView(string type, string sortName, BaseItem parent)
{
return _userViewManager.GetUserSubView(parent.Id.ToString("N"), type, sortName, CancellationToken.None);
}
diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs
index 8693d867c..8203e5304 100644
--- a/MediaBrowser.Controller/Entities/Video.cs
+++ b/MediaBrowser.Controller/Entities/Video.cs
@@ -406,30 +406,31 @@ namespace MediaBrowser.Controller.Entities
}
}
- internal override bool IsValidFromResolver(BaseItem newItem)
+ internal override ItemUpdateType UpdateFromResolvedItem(BaseItem newItem)
{
- var current = this;
+ var updateType = base.UpdateFromResolvedItem(newItem);
- var newAsVideo = newItem as Video;
-
- if (newAsVideo != null)
+ var newVideo = newItem as Video;
+ if (newVideo != null)
{
- if (!current.AdditionalParts.SequenceEqual(newAsVideo.AdditionalParts, StringComparer.OrdinalIgnoreCase))
+ if (!AdditionalParts.SequenceEqual(newVideo.AdditionalParts, StringComparer.Ordinal))
{
- return false;
+ AdditionalParts = newVideo.AdditionalParts;
+ updateType |= ItemUpdateType.MetadataImport;
}
- if (!current.LocalAlternateVersions.SequenceEqual(newAsVideo.LocalAlternateVersions, StringComparer.OrdinalIgnoreCase))
+ if (!LocalAlternateVersions.SequenceEqual(newVideo.LocalAlternateVersions, StringComparer.Ordinal))
{
- return false;
+ LocalAlternateVersions = newVideo.LocalAlternateVersions;
+ updateType |= ItemUpdateType.MetadataImport;
}
-
- if (newAsVideo.VideoType != VideoType)
+ if (VideoType != newVideo.VideoType)
{
- return false;
+ VideoType = newVideo.VideoType;
+ updateType |= ItemUpdateType.MetadataImport;
}
}
- return base.IsValidFromResolver(newItem);
+ return updateType;
}
public static string[] QueryPlayableStreamFiles(string rootPath, VideoType videoType)
@@ -521,9 +522,9 @@ namespace MediaBrowser.Controller.Entities
}
}
- public override async Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken)
+ public override void UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken)
{
- await base.UpdateToRepository(updateReason, cancellationToken).ConfigureAwait(false);
+ base.UpdateToRepository(updateReason, cancellationToken);
var localAlternates = GetLocalAlternateVersionIds()
.Select(i => LibraryManager.GetItemById(i))
@@ -540,7 +541,7 @@ namespace MediaBrowser.Controller.Entities
item.Genres = Genres;
item.ProviderIds = ProviderIds;
- await item.UpdateToRepository(ItemUpdateType.MetadataDownload, cancellationToken).ConfigureAwait(false);
+ item.UpdateToRepository(ItemUpdateType.MetadataDownload, cancellationToken);
}
}
diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs
index 3001e3366..7fceeb780 100644
--- a/MediaBrowser.Controller/Library/ILibraryManager.cs
+++ b/MediaBrowser.Controller/Library/ILibraryManager.cs
@@ -207,11 +207,7 @@ namespace MediaBrowser.Controller.Library
/// <summary>
/// Updates the item.
/// </summary>
- /// <param name="item">The item.</param>
- /// <param name="updateReason">The update reason.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task UpdateItem(BaseItem item, ItemUpdateType updateReason, CancellationToken cancellationToken);
+ void UpdateItem(BaseItem item, ItemUpdateType updateReason, CancellationToken cancellationToken);
/// <summary>
/// Retrieves the item.
@@ -330,8 +326,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="viewType">Type of the view.</param>
/// <param name="sortName">Name of the sort.</param>
/// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;UserView&gt;.</returns>
- Task<UserView> GetNamedView(string name,
+ UserView GetNamedView(string name,
string viewType,
string sortName,
CancellationToken cancellationToken);
@@ -345,8 +340,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="sortName">Name of the sort.</param>
/// <param name="uniqueId">The unique identifier.</param>
/// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;UserView&gt;.</returns>
- Task<UserView> GetNamedView(string name,
+ UserView GetNamedView(string name,
string parentId,
string viewType,
string sortName,
diff --git a/MediaBrowser.Controller/Library/IUserViewManager.cs b/MediaBrowser.Controller/Library/IUserViewManager.cs
index 76182c641..ac37dc869 100644
--- a/MediaBrowser.Controller/Library/IUserViewManager.cs
+++ b/MediaBrowser.Controller/Library/IUserViewManager.cs
@@ -13,9 +13,9 @@ namespace MediaBrowser.Controller.Library
{
Task<Folder[]> GetUserViews(UserViewQuery query, CancellationToken cancellationToken);
- Task<UserView> GetUserSubView(string name, string parentId, string type, string sortName, CancellationToken cancellationToken);
+ UserView GetUserSubView(string name, string parentId, string type, string sortName, CancellationToken cancellationToken);
- Task<UserView> GetUserSubView(string category, string type, string sortName, CancellationToken cancellationToken);
+ UserView GetUserSubView(string category, string type, string sortName, CancellationToken cancellationToken);
List<Tuple<BaseItem, List<BaseItem>>> GetLatestItems(LatestItemsQuery request, DtoOptions options);
}
diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs
index be85e115c..56f2353f1 100644
--- a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs
+++ b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs
@@ -236,14 +236,12 @@ namespace MediaBrowser.Controller.LiveTv
/// <param name="query">The query.</param>
/// <param name="options">The options.</param>
/// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{QueryResult{ProgramInfoDto}}.</returns>
- Task<QueryResult<BaseItemDto>> GetRecommendedPrograms(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken);
+ QueryResult<BaseItemDto> GetRecommendedPrograms(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken);
/// <summary>
/// Gets the recommended programs internal.
/// </summary>
- /// <returns>Task&lt;QueryResult&lt;LiveTvProgram&gt;&gt;.</returns>
- Task<QueryResult<BaseItem>> GetRecommendedProgramsInternal(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken);
+ QueryResult<BaseItem> GetRecommendedProgramsInternal(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken);
/// <summary>
/// Gets the live tv information.
@@ -264,8 +262,7 @@ namespace MediaBrowser.Controller.LiveTv
/// Gets the live tv folder.
/// </summary>
/// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>BaseItemDto.</returns>
- Task<Folder> GetInternalLiveTvFolder(CancellationToken cancellationToken);
+ Folder GetInternalLiveTvFolder(CancellationToken cancellationToken);
/// <summary>
/// Gets the live tv folder.
@@ -273,7 +270,7 @@ namespace MediaBrowser.Controller.LiveTv
/// <param name="userId">The user identifier.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>BaseItemDto.</returns>
- Task<BaseItemDto> GetLiveTvFolder(string userId, CancellationToken cancellationToken);
+ BaseItemDto GetLiveTvFolder(string userId, CancellationToken cancellationToken);
/// <summary>
/// Gets the enabled users.
@@ -284,7 +281,7 @@ namespace MediaBrowser.Controller.LiveTv
/// <summary>
/// Gets the internal channels.
/// </summary>
- Task<QueryResult<BaseItem>> GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken);
+ QueryResult<BaseItem> GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken);
/// <summary>
/// Gets the internal recordings.
@@ -362,13 +359,6 @@ namespace MediaBrowser.Controller.LiveTv
/// <param name="user">The user.</param>
void AddChannelInfo(List<Tuple<BaseItemDto, LiveTvChannel>> items, DtoOptions options, User user);
- /// <summary>
- /// Called when [recording file deleted].
- /// </summary>
- /// <param name="recording">The recording.</param>
- /// <returns>Task.</returns>
- Task OnRecordingFileDeleted(BaseItem recording);
-
Task<List<ChannelInfo>> GetChannelsForListingsProvider(string id, CancellationToken cancellationToken);
Task<List<ChannelInfo>> GetChannelsFromListingsProviderData(string id, CancellationToken cancellationToken);
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs
index 8fa96076b..2dfc59d22 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs
@@ -161,10 +161,5 @@ namespace MediaBrowser.Controller.LiveTv
{
return LiveTvManager.DeleteRecording(this);
}
-
- public override Task OnFileDeleted()
- {
- return LiveTvManager.OnRecordingFileDeleted(this);
- }
}
}
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
index c5fe7b1b3..1dfed4f75 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
@@ -160,10 +160,5 @@ namespace MediaBrowser.Controller.LiveTv
{
return LiveTvManager.DeleteRecording(this);
}
-
- public override Task OnFileDeleted()
- {
- return LiveTvManager.OnRecordingFileDeleted(this);
- }
}
}
diff --git a/MediaBrowser.Controller/Providers/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs
index 77e6a7e40..c2cbda11d 100644
--- a/MediaBrowser.Controller/Providers/IProviderManager.cs
+++ b/MediaBrowser.Controller/Providers/IProviderManager.cs
@@ -119,16 +119,12 @@ namespace MediaBrowser.Controller.Providers
/// <param name="item">The item.</param>
/// <param name="updateType">Type of the update.</param>
/// <returns>Task.</returns>
- Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType);
+ void SaveMetadata(IHasMetadata item, ItemUpdateType updateType);
/// <summary>
/// Saves the metadata.
/// </summary>
- /// <param name="item">The item.</param>
- /// <param name="updateType">Type of the update.</param>
- /// <param name="savers">The savers.</param>
- /// <returns>Task.</returns>
- Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType, IEnumerable<string> savers);
+ void SaveMetadata(IHasMetadata item, ItemUpdateType updateType, IEnumerable<string> savers);
/// <summary>
/// Gets the metadata options.
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index b93f78341..f222b2da4 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -204,7 +204,7 @@ namespace MediaBrowser.Providers.Manager
LibraryManager.UpdatePeople(baseItem, result.People);
await SavePeopleMetadata(result.People, libraryOptions, cancellationToken).ConfigureAwait(false);
}
- await result.Item.UpdateToRepository(reason, cancellationToken).ConfigureAwait(false);
+ result.Item.UpdateToRepository(reason, cancellationToken);
}
private async Task SavePeopleMetadata(List<PersonInfo> people, LibraryOptions libraryOptions, CancellationToken cancellationToken)
@@ -238,7 +238,7 @@ namespace MediaBrowser.Providers.Manager
if (saveEntity)
{
- await personEntity.UpdateToRepository(updateType, cancellationToken).ConfigureAwait(false);
+ personEntity.UpdateToRepository(updateType, cancellationToken);
}
}
}
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index c36d4cf63..9f46d41df 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -560,30 +560,20 @@ namespace MediaBrowser.Providers.Manager
new MetadataOptions();
}
- private Task _completedTask = Task.FromResult(true);
/// <summary>
/// Saves the metadata.
/// </summary>
- /// <param name="item">The item.</param>
- /// <param name="updateType">Type of the update.</param>
- /// <returns>Task.</returns>
- public Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType)
+ public void SaveMetadata(IHasMetadata item, ItemUpdateType updateType)
{
SaveMetadata(item, updateType, _savers);
- return _completedTask;
}
/// <summary>
/// Saves the metadata.
/// </summary>
- /// <param name="item">The item.</param>
- /// <param name="updateType">Type of the update.</param>
- /// <param name="savers">The savers.</param>
- /// <returns>Task.</returns>
- public Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType, IEnumerable<string> savers)
+ public void SaveMetadata(IHasMetadata item, ItemUpdateType updateType, IEnumerable<string> savers)
{
SaveMetadata(item, updateType, _savers.Where(i => savers.Contains(i.Name, StringComparer.OrdinalIgnoreCase)));
- return _completedTask;
}
/// <summary>
diff --git a/MediaBrowser.Providers/TV/DummySeasonProvider.cs b/MediaBrowser.Providers/TV/DummySeasonProvider.cs
index de51126ee..771570cbc 100644
--- a/MediaBrowser.Providers/TV/DummySeasonProvider.cs
+++ b/MediaBrowser.Providers/TV/DummySeasonProvider.cs
@@ -78,7 +78,7 @@ namespace MediaBrowser.Providers.TV
else if (existingSeason.IsVirtualItem)
{
existingSeason.IsVirtualItem = false;
- await existingSeason.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false);
+ existingSeason.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken);
}
}
@@ -97,7 +97,7 @@ namespace MediaBrowser.Providers.TV
else if (existingSeason.IsVirtualItem)
{
existingSeason.IsVirtualItem = false;
- await existingSeason.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false);
+ existingSeason.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken);
}
}
diff --git a/MediaBrowser.XbmcMetadata/EntryPoint.cs b/MediaBrowser.XbmcMetadata/EntryPoint.cs
index 98460f767..9cc17481c 100644
--- a/MediaBrowser.XbmcMetadata/EntryPoint.cs
+++ b/MediaBrowser.XbmcMetadata/EntryPoint.cs
@@ -52,7 +52,7 @@ namespace MediaBrowser.XbmcMetadata
var items = _libraryManager.GetItemList(new InternalItemsQuery
{
- PersonIds = new [] { person.Id.ToString("N") },
+ PersonIds = new[] { person.Id.ToString("N") },
DtoOptions = new DtoOptions(true)
});
@@ -84,7 +84,7 @@ namespace MediaBrowser.XbmcMetadata
GC.SuppressFinalize(this);
}
- private async void SaveMetadataForItem(BaseItem item, ItemUpdateType updateReason)
+ private void SaveMetadataForItem(BaseItem item, ItemUpdateType updateReason)
{
var locationType = item.LocationType;
if (locationType == LocationType.Remote ||
@@ -105,7 +105,7 @@ namespace MediaBrowser.XbmcMetadata
try
{
- await _providerManager.SaveMetadata(item, updateReason, new[] { BaseNfoSaver.SaverName }).ConfigureAwait(false);
+ _providerManager.SaveMetadata(item, updateReason, new[] { BaseNfoSaver.SaverName });
}
catch (Exception ex)
{