diff options
| author | Luke <luke.pulverenti@gmail.com> | 2015-03-19 13:21:35 -0400 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2015-03-19 13:21:35 -0400 |
| commit | 9926be0d9de688c04065c916e44ada4177b38a80 (patch) | |
| tree | 15338144a143948ffbee316641757e81489a7354 /MediaBrowser.Server.Implementations/Library/LibraryManager.cs | |
| parent | b756e677d733992c2033bdd369980a37e17609e4 (diff) | |
| parent | 0564d454e5ad4f59702aa9022af6bb8fd064a9ff (diff) | |
Merge pull request #1043 from MediaBrowser/dev
3.0.5557.0
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library/LibraryManager.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/LibraryManager.cs | 73 |
1 files changed, 44 insertions, 29 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index e6e6b8c74..1f82e7ef1 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -1584,15 +1584,22 @@ namespace MediaBrowser.Server.Implementations.Library .FirstOrDefault(i => !string.IsNullOrWhiteSpace(i)); } - public async Task<UserView> GetNamedView(string name, - string type, + public async Task<UserView> GetNamedView(User user, + string name, + string viewType, string sortName, CancellationToken cancellationToken) { + if (ConfigurationManager.Configuration.EnableUserSpecificUserViews) + { + return await GetNamedViewInternal(user, name, null, viewType, sortName, cancellationToken) + .ConfigureAwait(false); + } + var path = Path.Combine(ConfigurationManager.ApplicationPaths.ItemsByNamePath, "views"); - path = Path.Combine(path, _fileSystem.GetValidFilename(type)); + path = Path.Combine(path, _fileSystem.GetValidFilename(viewType)); var id = GetNewItemId(path + "_namedview_" + name, typeof(UserView)); @@ -1611,7 +1618,7 @@ namespace MediaBrowser.Server.Implementations.Library Id = id, DateCreated = DateTime.UtcNow, Name = name, - ViewType = type, + ViewType = viewType, ForcedSortName = sortName }; @@ -1627,31 +1634,38 @@ namespace MediaBrowser.Server.Implementations.Library if (refresh) { - await item.RefreshMetadata(new MetadataRefreshOptions - { - ForceSave = true - - }, cancellationToken).ConfigureAwait(false); + await item.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None).ConfigureAwait(false); + _providerManagerFactory().QueueRefresh(item.Id, new MetadataRefreshOptions()); } return item; } - public async Task<UserView> GetSpecialFolder(User user, + public Task<UserView> GetNamedView(User user, string name, string parentId, string viewType, string sortName, CancellationToken cancellationToken) { - if (string.IsNullOrWhiteSpace(name)) + if (string.IsNullOrWhiteSpace(parentId)) { - throw new ArgumentNullException("name"); + throw new ArgumentNullException("parentId"); } - if (string.IsNullOrWhiteSpace(parentId)) + return GetNamedViewInternal(user, name, parentId, viewType, sortName, cancellationToken); + } + + private async Task<UserView> GetNamedViewInternal(User user, + string name, + string parentId, + string viewType, + string sortName, + CancellationToken cancellationToken) + { + if (string.IsNullOrWhiteSpace(name)) { - throw new ArgumentNullException("parentId"); + throw new ArgumentNullException("name"); } if (string.IsNullOrWhiteSpace(viewType)) @@ -1659,13 +1673,13 @@ namespace MediaBrowser.Server.Implementations.Library throw new ArgumentNullException("viewType"); } - var id = GetNewItemId("7_namedview_" + name + user.Id.ToString("N") + parentId, typeof(UserView)); + var id = GetNewItemId("37_namedview_" + name + user.Id.ToString("N") + (parentId ?? string.Empty), typeof(UserView)); - var path = Path.Combine(ConfigurationManager.ApplicationPaths.InternalMetadataPath, "views", "specialviews", id.ToString("N")); + var path = Path.Combine(ConfigurationManager.ApplicationPaths.InternalMetadataPath, "views", id.ToString("N")); var item = GetItemById(id) as UserView; - var refresh = false; + var isNew = false; if (item == null) { @@ -1679,27 +1693,24 @@ namespace MediaBrowser.Server.Implementations.Library Name = name, ViewType = viewType, ForcedSortName = sortName, - UserId = user.Id, - ParentId = new Guid(parentId) + UserId = user.Id }; + if (!string.IsNullOrWhiteSpace(parentId)) + { + item.ParentId = new Guid(parentId); + } + await CreateItem(item, cancellationToken).ConfigureAwait(false); - refresh = true; + isNew = true; } - if (!refresh && item != null) - { - refresh = (DateTime.UtcNow - item.DateLastSaved).TotalHours >= 24; - } + var refresh = isNew || (DateTime.UtcNow - item.DateLastSaved).TotalHours >= 6; if (refresh) { - await item.RefreshMetadata(new MetadataRefreshOptions - { - ForceSave = true - - }, cancellationToken).ConfigureAwait(false); + _providerManagerFactory().QueueRefresh(item.Id, new MetadataRefreshOptions()); } return item; @@ -1846,6 +1857,10 @@ namespace MediaBrowser.Server.Implementations.Library { var options = new ExtendedNamingOptions(); + // These cause apps to have problems + options.AudioFileExtensions.Remove(".m3u"); + options.AudioFileExtensions.Remove(".wpl"); + if (!ConfigurationManager.Configuration.EnableAudioArchiveFiles) { options.AudioFileExtensions.Remove(".rar"); |
