aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server
diff options
context:
space:
mode:
Diffstat (limited to 'Jellyfin.Server')
-rw-r--r--Jellyfin.Server/Migrations/Routines/FixPlaylistOwner.cs21
-rw-r--r--Jellyfin.Server/Startup.cs8
2 files changed, 22 insertions, 7 deletions
diff --git a/Jellyfin.Server/Migrations/Routines/FixPlaylistOwner.cs b/Jellyfin.Server/Migrations/Routines/FixPlaylistOwner.cs
index 55aadae79..cf3182003 100644
--- a/Jellyfin.Server/Migrations/Routines/FixPlaylistOwner.cs
+++ b/Jellyfin.Server/Migrations/Routines/FixPlaylistOwner.cs
@@ -1,5 +1,6 @@
using System;
using System.Linq;
+using System.Threading;
using Jellyfin.Data.Enums;
using MediaBrowser.Controller.Entities;
@@ -53,13 +54,21 @@ internal class FixPlaylistOwner : IMigrationRoutine
foreach (var playlist in playlists)
{
var shares = playlist.Shares;
- var firstEditShare = shares.First(x => x.CanEdit);
- if (firstEditShare is not null && Guid.TryParse(firstEditShare.UserId, out var guid))
+ if (shares.Length > 0)
{
- playlist.OwnerUserId = guid;
- playlist.Shares = shares.Where(x => x != firstEditShare).ToArray();
-
- _playlistManager.UpdatePlaylistAsync(playlist).GetAwaiter().GetResult();
+ var firstEditShare = shares.First(x => x.CanEdit);
+ if (firstEditShare is not null && Guid.TryParse(firstEditShare.UserId, out var guid))
+ {
+ playlist.OwnerUserId = guid;
+ playlist.Shares = shares.Where(x => x != firstEditShare).ToArray();
+ playlist.UpdateToRepositoryAsync(ItemUpdateType.MetadataEdit, CancellationToken.None).GetAwaiter().GetResult();
+ _playlistManager.SavePlaylistFile(playlist);
+ }
+ }
+ else
+ {
+ playlist.OpenAccess = true;
+ playlist.UpdateToRepositoryAsync(ItemUpdateType.MetadataEdit, CancellationToken.None).GetAwaiter().GetResult();
}
}
}
diff --git a/Jellyfin.Server/Startup.cs b/Jellyfin.Server/Startup.cs
index 5b9397e30..b759b6bca 100644
--- a/Jellyfin.Server/Startup.cs
+++ b/Jellyfin.Server/Startup.cs
@@ -182,7 +182,7 @@ namespace Jellyfin.Server
// This must be injected before any path related middleware.
mainApp.UsePathTrim();
- mainApp.UseStaticFiles();
+
if (appConfig.HostWebClient())
{
var extensionProvider = new FileExtensionContentTypeProvider();
@@ -190,6 +190,11 @@ namespace Jellyfin.Server
// subtitles octopus requires .data, .mem files.
extensionProvider.Mappings.Add(".data", MediaTypeNames.Application.Octet);
extensionProvider.Mappings.Add(".mem", MediaTypeNames.Application.Octet);
+ mainApp.UseDefaultFiles(new DefaultFilesOptions
+ {
+ FileProvider = new PhysicalFileProvider(_serverConfigurationManager.ApplicationPaths.WebPath),
+ RequestPath = "/web"
+ });
mainApp.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(_serverConfigurationManager.ApplicationPaths.WebPath),
@@ -200,6 +205,7 @@ namespace Jellyfin.Server
mainApp.UseRobotsRedirection();
}
+ mainApp.UseStaticFiles();
mainApp.UseAuthentication();
mainApp.UseJellyfinApiSwagger(_serverConfigurationManager);
mainApp.UseQueryStringDecoding();