From 1df5839eb06542c4190868741e214720051ef530 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 16 Aug 2013 16:13:45 -0400 Subject: [PATCH] factor mixed folder value into item id --- .../Extensions/BaseExtensions.cs | 33 +++++++++++++++---- MediaBrowser.Controller/Entities/Folder.cs | 2 +- .../ImageFromMediaLocationProvider.cs | 6 +++- .../Library/ResolverHelper.cs | 2 +- .../Library/Resolvers/Movies/MovieResolver.cs | 1 + 5 files changed, 34 insertions(+), 10 deletions(-) diff --git a/MediaBrowser.Common/Extensions/BaseExtensions.cs b/MediaBrowser.Common/Extensions/BaseExtensions.cs index 4e2a475d90..0b63d7b31c 100644 --- a/MediaBrowser.Common/Extensions/BaseExtensions.cs +++ b/MediaBrowser.Common/Extensions/BaseExtensions.cs @@ -40,17 +40,36 @@ namespace MediaBrowser.Common.Extensions /// Gets the MB id. /// /// The STR. - /// A type. + /// The type. /// Guid. - /// aType - public static Guid GetMBId(this string str, Type aType) + public static Guid GetMBId(this string str, Type type) { - if (aType == null) + return str.GetMBId(type, false); + } + + /// + /// Gets the MB id. + /// + /// The STR. + /// The type. + /// if set to true [is in mixed folder]. + /// Guid. + /// type + public static Guid GetMBId(this string str, Type type, bool isInMixedFolder) + { + if (type == null) { - throw new ArgumentNullException("aType"); + throw new ArgumentNullException("type"); } - - return (aType.FullName + str.ToLower()).GetMD5(); + + var key = type.FullName + str.ToLower(); + + if (isInMixedFolder) + { + key += "InMixedFolder"; + } + + return key.GetMD5(); } /// diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 3eda96d3d2..a27f1fdd08 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -101,7 +101,7 @@ namespace MediaBrowser.Controller.Entities if (item.Id == Guid.Empty) { - item.Id = item.Path.GetMBId(item.GetType()); + item.Id = item.Path.GetMBId(item.GetType(), item.IsInMixedFolder); } if (item.DateCreated == DateTime.MinValue) diff --git a/MediaBrowser.Providers/ImageFromMediaLocationProvider.cs b/MediaBrowser.Providers/ImageFromMediaLocationProvider.cs index 9c991a496f..38030cffa4 100644 --- a/MediaBrowser.Providers/ImageFromMediaLocationProvider.cs +++ b/MediaBrowser.Providers/ImageFromMediaLocationProvider.cs @@ -46,7 +46,7 @@ namespace MediaBrowser.Providers return true; } - return item.IsInMixedFolder && !(item is Episode); + return item.IsInMixedFolder && item.Parent != null && !(item is Episode); } return false; } @@ -118,6 +118,10 @@ namespace MediaBrowser.Providers { if (item.IsInMixedFolder) { + if (item.Parent == null) + { + return item.ResolveArgs; + } return item.Parent.ResolveArgs; } diff --git a/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs b/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs index 8b98a69447..1605db5a7b 100644 --- a/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs +++ b/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs @@ -34,7 +34,7 @@ namespace MediaBrowser.Server.Implementations.Library item.Parent = args.Parent; } - item.Id = item.Path.GetMBId(item.GetType()); + item.Id = item.Path.GetMBId(item.GetType(), item.IsInMixedFolder); // If the resolver didn't specify this if (string.IsNullOrEmpty(item.DisplayMediaType)) diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 94b79f0a11..d62baddecb 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -244,6 +244,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies if (item != null) { + item.IsInMixedFolder = false; movies.Add(item); } }