diff --git a/Emby.Server.Implementations/Playlists/PlaylistManager.cs b/Emby.Server.Implementations/Playlists/PlaylistManager.cs
index 59c96852af..0e5add635d 100644
--- a/Emby.Server.Implementations/Playlists/PlaylistManager.cs
+++ b/Emby.Server.Implementations/Playlists/PlaylistManager.cs
@@ -526,9 +526,9 @@ namespace Emby.Server.Implementations.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))
+ if (rankedShares.Length > 0)
{
- playlist.OwnerUserId = guid;
+ playlist.OwnerUserId = rankedShares[0].UserId;
playlist.Shares = rankedShares.Skip(1).ToArray();
await UpdatePlaylist(playlist).ConfigureAwait(false);
}
@@ -556,11 +556,11 @@ namespace Emby.Server.Implementations.Playlists
await UpdatePlaylist(playlist).ConfigureAwait(false);
}
- public async Task AddToShares(Guid playlistId, Guid userId, UserPermissions share)
+ public async Task AddToShares(Guid playlistId, Guid userId, PlaylistUserPermissions share)
{
var playlist = GetPlaylist(userId, playlistId);
var shares = playlist.Shares.ToList();
- var existingUserShare = shares.FirstOrDefault(s => s.UserId.Equals(share.UserId, StringComparison.OrdinalIgnoreCase));
+ var existingUserShare = shares.FirstOrDefault(s => s.UserId.Equals(share.UserId));
if (existingUserShare is not null)
{
shares.Remove(existingUserShare);
@@ -571,7 +571,7 @@ namespace Emby.Server.Implementations.Playlists
await UpdatePlaylist(playlist).ConfigureAwait(false);
}
- public async Task RemoveFromShares(Guid playlistId, Guid userId, UserPermissions share)
+ public async Task RemoveFromShares(Guid playlistId, Guid userId, PlaylistUserPermissions share)
{
var playlist = GetPlaylist(userId, playlistId);
var shares = playlist.Shares.ToList();
diff --git a/Jellyfin.Api/Controllers/PlaylistsController.cs b/Jellyfin.Api/Controllers/PlaylistsController.cs
index 7ca04d7ba5..862e5235ee 100644
--- a/Jellyfin.Api/Controllers/PlaylistsController.cs
+++ b/Jellyfin.Api/Controllers/PlaylistsController.cs
@@ -108,13 +108,13 @@ public class PlaylistsController : BaseJellyfinApiController
/// Unauthorized access.
/// Playlist not found.
///
- /// A list of objects.
+ /// A list of objects.
///
[HttpGet("{playlistId}/User")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
- public ActionResult> GetPlaylistUsers(
+ public ActionResult> GetPlaylistUsers(
[FromRoute, Required] Guid playlistId)
{
var userId = User.GetUserId();
@@ -206,7 +206,7 @@ public class PlaylistsController : BaseJellyfinApiController
return Unauthorized("Unauthorized access");
}
- await _playlistManager.AddToShares(playlistId, callingUserId, new UserPermissions(userId.ToString(), canEdit)).ConfigureAwait(false);
+ await _playlistManager.AddToShares(playlistId, callingUserId, new PlaylistUserPermissions(userId.ToString(), canEdit)).ConfigureAwait(false);
return NoContent();
}
diff --git a/Jellyfin.Api/Models/PlaylistDtos/CreatePlaylistDto.cs b/Jellyfin.Api/Models/PlaylistDtos/CreatePlaylistDto.cs
index 6eedd21316..69694a7699 100644
--- a/Jellyfin.Api/Models/PlaylistDtos/CreatePlaylistDto.cs
+++ b/Jellyfin.Api/Models/PlaylistDtos/CreatePlaylistDto.cs
@@ -36,7 +36,7 @@ public class CreatePlaylistDto
///
/// Gets or sets the playlist users.
///
- public IReadOnlyList Users { get; set; } = [];
+ public IReadOnlyList Users { get; set; } = [];
///
/// Gets or sets a value indicating whether the playlist is public.
diff --git a/MediaBrowser.Controller/Playlists/IPlaylistManager.cs b/MediaBrowser.Controller/Playlists/IPlaylistManager.cs
index 238923d296..1750be6199 100644
--- a/MediaBrowser.Controller/Playlists/IPlaylistManager.cs
+++ b/MediaBrowser.Controller/Playlists/IPlaylistManager.cs
@@ -41,7 +41,7 @@ namespace MediaBrowser.Controller.Playlists
/// The user identifier.
/// The share.
/// Task.
- Task AddToShares(Guid playlistId, Guid userId, UserPermissions share);
+ Task AddToShares(Guid playlistId, Guid userId, PlaylistUserPermissions share);
///
/// Rremoves a share from the playlist.
@@ -50,7 +50,7 @@ namespace MediaBrowser.Controller.Playlists
/// The user identifier.
/// The share.
/// Task.
- Task RemoveFromShares(Guid playlistId, Guid userId, UserPermissions share);
+ Task RemoveFromShares(Guid playlistId, Guid userId, PlaylistUserPermissions share);
///
/// Creates the playlist.
diff --git a/MediaBrowser.Controller/Playlists/Playlist.cs b/MediaBrowser.Controller/Playlists/Playlist.cs
index dfd9b83302..b948d2e18b 100644
--- a/MediaBrowser.Controller/Playlists/Playlist.cs
+++ b/MediaBrowser.Controller/Playlists/Playlist.cs
@@ -40,7 +40,7 @@ namespace MediaBrowser.Controller.Playlists
public bool OpenAccess { get; set; }
- public IReadOnlyList Shares { get; set; }
+ public IReadOnlyList Shares { get; set; }
[JsonIgnore]
public bool IsFile => IsPlaylistFile(Path);
diff --git a/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs
index 4ee1b2ef69..22ae3f12b2 100644
--- a/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs
+++ b/MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs
@@ -519,7 +519,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
private void FetchFromSharesNode(XmlReader reader, IHasShares item)
{
- var list = new List();
+ var list = new List();
reader.MoveToContent();
reader.Read();
@@ -830,7 +830,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
///
/// The xml reader.
/// The share.
- protected UserPermissions? GetShare(XmlReader reader)
+ protected PlaylistUserPermissions? GetShare(XmlReader reader)
{
reader.MoveToContent();
reader.Read();
@@ -864,7 +864,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
// This is valid
if (!string.IsNullOrWhiteSpace(userId))
{
- return new UserPermissions(userId, canEdit);
+ return new PlaylistUserPermissions(userId, canEdit);
}
return null;
diff --git a/MediaBrowser.Model/Entities/IHasShares.cs b/MediaBrowser.Model/Entities/IHasShares.cs
index fb6b6e424b..8c4ba6c425 100644
--- a/MediaBrowser.Model/Entities/IHasShares.cs
+++ b/MediaBrowser.Model/Entities/IHasShares.cs
@@ -10,5 +10,5 @@ public interface IHasShares
///
/// Gets or sets the shares.
///
- IReadOnlyList Shares { get; set; }
+ IReadOnlyList Shares { get; set; }
}
diff --git a/MediaBrowser.Model/Entities/UserPermissions.cs b/MediaBrowser.Model/Entities/PlaylistUserPermissions.cs
similarity index 62%
rename from MediaBrowser.Model/Entities/UserPermissions.cs
rename to MediaBrowser.Model/Entities/PlaylistUserPermissions.cs
index 80e2cd32c2..b5f017d2bf 100644
--- a/MediaBrowser.Model/Entities/UserPermissions.cs
+++ b/MediaBrowser.Model/Entities/PlaylistUserPermissions.cs
@@ -1,16 +1,18 @@
+using System;
+
namespace MediaBrowser.Model.Entities;
///
-/// Class to hold data on user permissions for lists.
+/// Class to hold data on user permissions for playlists.
///
-public class UserPermissions
+public class PlaylistUserPermissions
{
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
/// The user id.
/// Edit permission.
- public UserPermissions(string userId, bool canEdit = false)
+ public PlaylistUserPermissions(Guid userId, bool canEdit = false)
{
UserId = userId;
CanEdit = canEdit;
@@ -19,7 +21,7 @@ public class UserPermissions
///
/// Gets or sets the user id.
///
- public string UserId { get; set; }
+ public Guid UserId { get; set; }
///
/// Gets or sets a value indicating whether the user has edit permissions.
diff --git a/MediaBrowser.Model/Playlists/PlaylistCreationRequest.cs b/MediaBrowser.Model/Playlists/PlaylistCreationRequest.cs
index f1351588fb..ec54b1afd3 100644
--- a/MediaBrowser.Model/Playlists/PlaylistCreationRequest.cs
+++ b/MediaBrowser.Model/Playlists/PlaylistCreationRequest.cs
@@ -33,7 +33,7 @@ public class PlaylistCreationRequest
///
/// Gets or sets the user permissions.
///
- public IReadOnlyList Users { get; set; } = [];
+ public IReadOnlyList Users { get; set; } = [];
///
/// Gets or sets a value indicating whether the playlist is public.