save library options on dialog close

This commit is contained in:
Luke Pulverenti 2016-08-13 23:12:26 -04:00
parent 7dbeeadea6
commit 89dd4f0be1
4 changed files with 33 additions and 8 deletions

View File

@ -11,6 +11,7 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using CommonIO; using CommonIO;
using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Configuration;
namespace MediaBrowser.Api.Library namespace MediaBrowser.Api.Library
@ -140,6 +141,14 @@ namespace MediaBrowser.Api.Library
public bool RefreshLibrary { get; set; } public bool RefreshLibrary { get; set; }
} }
[Route("/Library/VirtualFolders/LibraryOptions", "POST")]
public class UpdateLibraryOptions : IReturnVoid
{
public string Id { get; set; }
public LibraryOptions LibraryOptions { get; set; }
}
/// <summary> /// <summary>
/// Class LibraryStructureService /// Class LibraryStructureService
/// </summary> /// </summary>
@ -188,6 +197,13 @@ namespace MediaBrowser.Api.Library
return ToOptimizedSerializedResultUsingCache(result); return ToOptimizedSerializedResultUsingCache(result);
} }
public void Post(UpdateLibraryOptions request)
{
var collectionFolder = (CollectionFolder)_libraryManager.GetItemById(request.Id);
collectionFolder.UpdateLibraryOptions(request.LibraryOptions);
}
/// <summary> /// <summary>
/// Posts the specified request. /// Posts the specified request.
/// </summary> /// </summary>
@ -220,12 +236,12 @@ namespace MediaBrowser.Api.Library
var currentPath = Path.Combine(rootFolderPath, request.Name); var currentPath = Path.Combine(rootFolderPath, request.Name);
var newPath = Path.Combine(rootFolderPath, request.NewName); var newPath = Path.Combine(rootFolderPath, request.NewName);
if (!_fileSystem.DirectoryExists(currentPath)) if (!_fileSystem.DirectoryExists(currentPath))
{ {
throw new DirectoryNotFoundException("The media collection does not exist"); throw new DirectoryNotFoundException("The media collection does not exist");
} }
if (!string.Equals(currentPath, newPath, StringComparison.OrdinalIgnoreCase) && _fileSystem.DirectoryExists(newPath)) if (!string.Equals(currentPath, newPath, StringComparison.OrdinalIgnoreCase) && _fileSystem.DirectoryExists(newPath))
{ {
throw new ArgumentException("There is already a media collection with the name " + newPath + "."); throw new ArgumentException("There is already a media collection with the name " + newPath + ".");
} }
@ -240,11 +256,11 @@ namespace MediaBrowser.Api.Library
//Create an unique name //Create an unique name
var temporaryName = Guid.NewGuid().ToString(); var temporaryName = Guid.NewGuid().ToString();
var temporaryPath = Path.Combine(rootFolderPath, temporaryName); var temporaryPath = Path.Combine(rootFolderPath, temporaryName);
_fileSystem.MoveDirectory(currentPath, temporaryPath); _fileSystem.MoveDirectory(currentPath, temporaryPath);
currentPath = temporaryPath; currentPath = temporaryPath;
} }
_fileSystem.MoveDirectory(currentPath, newPath); _fileSystem.MoveDirectory(currentPath, newPath);
} }
finally finally
{ {

View File

@ -95,9 +95,19 @@ namespace MediaBrowser.Controller.Entities
return System.IO.Path.Combine(path, "options.xml"); return System.IO.Path.Combine(path, "options.xml");
} }
public void UpdateLibraryOptions(LibraryOptions options)
{
SaveLibraryOptions(Path, options);
}
public static void SaveLibraryOptions(string path, LibraryOptions options) public static void SaveLibraryOptions(string path, LibraryOptions options)
{ {
XmlSerializer.SerializeToFile(options, GetLibraryOptionsPath(path)); lock (LibraryOptions)
{
LibraryOptions[path] = options;
XmlSerializer.SerializeToFile(options, GetLibraryOptionsPath(path));
}
} }
/// <summary> /// <summary>

View File

@ -110,8 +110,7 @@ namespace MediaBrowser.Controller.Entities.Movies
{ {
get get
{ {
// TODO return !FileSystem.ContainsSubPath(ConfigurationManager.ApplicationPaths.DataPath, Path);
return false;
} }
} }

View File

@ -8,7 +8,7 @@ namespace MediaBrowser.Server.Implementations.Collections
public class CollectionsDynamicFolder : IVirtualFolderCreator public class CollectionsDynamicFolder : IVirtualFolderCreator
{ {
private readonly IApplicationPaths _appPaths; private readonly IApplicationPaths _appPaths;
private IFileSystem _fileSystem; private readonly IFileSystem _fileSystem;
public CollectionsDynamicFolder(IApplicationPaths appPaths, IFileSystem fileSystem) public CollectionsDynamicFolder(IApplicationPaths appPaths, IFileSystem fileSystem)
{ {