Fix playlist creation and removal

This commit is contained in:
Shadowghost
2023-03-10 17:46:59 +01:00
parent 6351d1022b
commit 76ae599bd3
11 changed files with 137 additions and 54 deletions

View File

@@ -135,16 +135,8 @@ namespace Emby.Server.Implementations.Playlists
{
Name = name,
Path = path,
Shares = new[]
{
new Share
{
UserId = options.UserId.Equals(default)
? null
: options.UserId.ToString("N", CultureInfo.InvariantCulture),
CanEdit = true
}
}
OwnerUserId = options.UserId,
Shares = options.Shares
};
playlist.SetMediaType(options.MediaType);
@@ -537,5 +529,39 @@ namespace Emby.Server.Implementations.Playlists
return _libraryManager.RootFolder.Children.OfType<Folder>().FirstOrDefault(i => string.Equals(i.GetType().Name, TypeName, StringComparison.Ordinal)) ??
_libraryManager.GetUserRootFolder().Children.OfType<Folder>().FirstOrDefault(i => string.Equals(i.GetType().Name, TypeName, StringComparison.Ordinal));
}
public async Task RemovePlaylists(Guid userId)
{
var playlists = GetPlaylists(userId);
foreach (var playlist in playlists)
{
// Update owner if shared
var rankedShares = playlist.Shares.OrderByDescending(x => x.CanEdit).ToArray();
if (rankedShares.Length > 0 && Guid.TryParse(rankedShares[0].UserId, out var guid))
{
playlist.OwnerUserId = guid;
playlist.Shares = rankedShares.Skip(1).ToArray();
await playlist.UpdateToRepositoryAsync(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
if (playlist.IsFile)
{
SavePlaylistFile(playlist);
}
}
else
{
// Remove playlist if not shared
_libraryManager.DeleteItem(
playlist,
new DeleteOptions
{
DeleteFileLocation = false,
DeleteFromExternalProvider = false
},
playlist.GetParent(),
false);
}
}
}
}
}