Browse Source

implement removing from playlists

Luke Pulverenti 11 years ago
parent
commit
9b92cc20f2

+ 9 - 1
MediaBrowser.Api/PlaylistService.cs

@@ -134,6 +134,7 @@ namespace MediaBrowser.Api
         {
             var playlist = (Playlist)_libraryManager.GetItemById(request.Id);
             var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null;
+
             var items = playlist.GetManageableItems().ToArray();
 
             var count = items.Length;
@@ -149,9 +150,16 @@ namespace MediaBrowser.Api
             }
 
             var dtos = items
-                   .Select(i => _dtoService.GetBaseItemDto(i, request.GetItemFields().ToList(), user))
+                   .Select(i => _dtoService.GetBaseItemDto(i.Item2, request.GetItemFields().ToList(), user))
                    .ToArray();
 
+            var index = 0;
+            foreach (var item in dtos)
+            {
+                item.PlaylistItemId = items[index].Item1.Id;
+                index++;
+            }
+
             var result = new ItemsResult
             {
                 Items = dtos,

+ 1 - 1
MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs

@@ -46,7 +46,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks
             return new ITaskTrigger[] { 
             
                 // At startup
-                new StartupTrigger (),
+                new StartupTrigger {DelayMs = 60000},
 
                 // Every so often
                 new IntervalTrigger { Interval = TimeSpan.FromHours(24)}

+ 1 - 1
MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs

@@ -43,7 +43,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks
             return new ITaskTrigger[] { 
             
                 // At startup
-                new StartupTrigger (),
+                new StartupTrigger {DelayMs = 30000},
 
                 // Every so often
                 new IntervalTrigger { Interval = TimeSpan.FromHours(24)}

+ 1 - 1
MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/PluginUpdateTask.cs

@@ -41,7 +41,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks
             return new ITaskTrigger[] { 
             
                 // At startup
-                new StartupTrigger (),
+                new StartupTrigger(),
 
                 // Every so often
                 new IntervalTrigger { Interval = TimeSpan.FromHours(24)}

+ 1 - 1
MediaBrowser.Common.Implementations/ScheduledTasks/Tasks/SystemUpdateTask.cs

@@ -52,7 +52,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks.Tasks
             return new ITaskTrigger[] { 
             
                 // At startup
-                new StartupTrigger (),
+                new StartupTrigger(),
 
                 // Every so often
                 new IntervalTrigger { Interval = TimeSpan.FromHours(24)}

+ 8 - 1
MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs

@@ -8,6 +8,13 @@ namespace MediaBrowser.Common.ScheduledTasks
     /// </summary>
     public class StartupTrigger : ITaskTrigger
     {
+        public int DelayMs { get; set; }
+
+        public StartupTrigger()
+        {
+            DelayMs = 3000;
+        }
+
         /// <summary>
         /// Stars waiting for the trigger action
         /// </summary>
@@ -16,7 +23,7 @@ namespace MediaBrowser.Common.ScheduledTasks
         {
             if (isApplicationStartup)
             {
-                await Task.Delay(3000).ConfigureAwait(false);
+                await Task.Delay(DelayMs).ConfigureAwait(false);
 
                 OnTriggered();
             }

+ 12 - 0
MediaBrowser.Controller/Entities/Folder.cs

@@ -924,6 +924,18 @@ namespace MediaBrowser.Controller.Entities
                 .Where(i => i != null);
         }
 
+
+        /// <summary>
+        /// Gets the linked children.
+        /// </summary>
+        /// <returns>IEnumerable{BaseItem}.</returns>
+        public IEnumerable<Tuple<LinkedChild,BaseItem>> GetLinkedChildrenInfos()
+        {
+            return LinkedChildren
+                .Select(i => new Tuple<LinkedChild,BaseItem>(i, GetLinkedChild(i)))
+                .Where(i => i.Item2 != null);
+        }
+
         protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
         {
             var changesFound = false;

+ 2 - 2
MediaBrowser.Controller/Playlists/Playlist.cs

@@ -22,9 +22,9 @@ namespace MediaBrowser.Controller.Playlists
             return GetPlayableItems(user);
         }
 
-        public IEnumerable<BaseItem> GetManageableItems()
+        public IEnumerable<Tuple<LinkedChild, BaseItem>> GetManageableItems()
         {
-            return GetPlaylistItems(MediaType, GetLinkedChildren(), null);
+            return GetLinkedChildrenInfos();
         }
 
         private IEnumerable<BaseItem> GetPlayableItems(User user)

+ 6 - 0
MediaBrowser.Model/Dto/BaseItemDto.cs

@@ -29,6 +29,12 @@ namespace MediaBrowser.Model.Dto
         /// <value>The id.</value>
         public string Id { get; set; }
 
+        /// <summary>
+        /// Gets or sets the playlist item identifier.
+        /// </summary>
+        /// <value>The playlist item identifier.</value>
+        public string PlaylistItemId { get; set; }
+        
         /// <summary>
         /// Gets or sets the date created.
         /// </summary>

+ 1 - 1
MediaBrowser.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs

@@ -42,7 +42,7 @@ namespace MediaBrowser.Server.Implementations.Channels
         {
             return new ITaskTrigger[] 
             { 
-                new StartupTrigger(),
+                new StartupTrigger{DelayMs = 10000},
 
                 new SystemEventTrigger{ SystemEvent = SystemEvent.WakeFromSleep},
 

+ 4 - 2
MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs

@@ -195,7 +195,8 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
             {
                 Name = string.Format(_localization.GetLocalizedString("FailedLoginAttemptWithUserName"), e.Argument.Username),
                 Type = "AuthenticationFailed",
-                ShortOverview = string.Format(_localization.GetLocalizedString("LabelIpAddressValue"), e.Argument.RemoteEndPoint)
+                ShortOverview = string.Format(_localization.GetLocalizedString("LabelIpAddressValue"), e.Argument.RemoteEndPoint),
+                Severity = LogSeverity.Error
             });
         }
 
@@ -427,7 +428,8 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
                     Name = string.Format(_localization.GetLocalizedString("ScheduledTaskFailedWithName"), task.Name),
                     Type = "ScheduledTaskFailed",
                     Overview = string.Join(Environment.NewLine, vals.ToArray()),
-                    ShortOverview = runningTime
+                    ShortOverview = runningTime,
+                    Severity = LogSeverity.Error
                 });
             }
         }

+ 2 - 2
MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs

@@ -1,7 +1,7 @@
-using System.Collections.Generic;
-using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Playlists;
+using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 

+ 3 - 2
MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs

@@ -193,13 +193,14 @@ namespace MediaBrowser.Server.Implementations.Playlists
                 throw new ArgumentException("No Playlist exists with the supplied Id");
             }
 
-            var children = playlist.LinkedChildren.ToList();
+            var children = playlist.GetManageableItems().ToList();
 
             var idList = entryIds.ToList();
 
-            var removals = children.Where(i => idList.Contains(i.Id));
+            var removals = children.Where(i => idList.Contains(i.Item1.Id));
 
             playlist.LinkedChildren = children.Except(removals)
+                .Select(i => i.Item1)
                 .ToList();
 
             await playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);