diff --git a/Jellyfin.Data/Entities/DisplayPreferences.cs b/Jellyfin.Data/Entities/DisplayPreferences.cs
index 6cefda7880..bcb872db37 100644
--- a/Jellyfin.Data/Entities/DisplayPreferences.cs
+++ b/Jellyfin.Data/Entities/DisplayPreferences.cs
@@ -135,6 +135,38 @@ namespace Jellyfin.Data.Entities
///
public IndexingKind? IndexBy { get; set; }
+ ///
+ /// Gets or sets the length of time to skip forwards, in milliseconds.
+ ///
+ ///
+ /// Required.
+ ///
+ public int SkipForwardLength { get; set; }
+
+ ///
+ /// Gets or sets the length of time to skip backwards, in milliseconds.
+ ///
+ ///
+ /// Required.
+ ///
+ public int SkipBackwardLength { get; set; }
+
+ ///
+ /// Gets or sets the Chromecast Version.
+ ///
+ ///
+ /// Required.
+ ///
+ public ChromecastVersion ChromecastVersion { get; set; }
+
+ ///
+ /// Gets or sets a value indicating whether the next video info overlay should be shown.
+ ///
+ ///
+ /// Required.
+ ///
+ public bool EnableNextVideoInfoOverlay { get; set; }
+
///
/// Gets or sets the home sections.
///
diff --git a/Jellyfin.Data/Enums/ChromecastVersion.cs b/Jellyfin.Data/Enums/ChromecastVersion.cs
new file mode 100644
index 0000000000..c549b6acc4
--- /dev/null
+++ b/Jellyfin.Data/Enums/ChromecastVersion.cs
@@ -0,0 +1,18 @@
+namespace Jellyfin.Data.Enums
+{
+ ///
+ /// An enum representing the version of Chromecast to be used by clients.
+ ///
+ public enum ChromecastVersion
+ {
+ ///
+ /// Stable Chromecast version.
+ ///
+ Stable,
+
+ ///
+ /// Nightly Chromecast version.
+ ///
+ Nightly
+ }
+}
diff --git a/Jellyfin.Server.Implementations/Migrations/20200630170339_AddDisplayPreferences.Designer.cs b/Jellyfin.Server.Implementations/Migrations/20200717233541_AddDisplayPreferences.Designer.cs
similarity index 95%
rename from Jellyfin.Server.Implementations/Migrations/20200630170339_AddDisplayPreferences.Designer.cs
rename to Jellyfin.Server.Implementations/Migrations/20200717233541_AddDisplayPreferences.Designer.cs
index 75f9bb7a3c..cf6b166172 100644
--- a/Jellyfin.Server.Implementations/Migrations/20200630170339_AddDisplayPreferences.Designer.cs
+++ b/Jellyfin.Server.Implementations/Migrations/20200717233541_AddDisplayPreferences.Designer.cs
@@ -1,6 +1,4 @@
-#pragma warning disable CS1591
-
-//
+//
using System;
using Jellyfin.Server.Implementations;
using Microsoft.EntityFrameworkCore;
@@ -11,7 +9,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace Jellyfin.Server.Implementations.Migrations
{
[DbContext(typeof(JellyfinDb))]
- [Migration("20200630170339_AddDisplayPreferences")]
+ [Migration("20200717233541_AddDisplayPreferences")]
partial class AddDisplayPreferences
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@@ -98,11 +96,17 @@ namespace Jellyfin.Server.Implementations.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
+ b.Property("ChromecastVersion")
+ .HasColumnType("INTEGER");
+
b.Property("Client")
.IsRequired()
.HasColumnType("TEXT")
.HasMaxLength(64);
+ b.Property("EnableNextVideoInfoOverlay")
+ .HasColumnType("INTEGER");
+
b.Property("IndexBy")
.HasColumnType("INTEGER");
@@ -124,8 +128,15 @@ namespace Jellyfin.Server.Implementations.Migrations
b.Property("ShowSidebar")
.HasColumnType("INTEGER");
+ b.Property("SkipBackwardLength")
+ .HasColumnType("INTEGER");
+
+ b.Property("SkipForwardLength")
+ .HasColumnType("INTEGER");
+
b.Property("SortBy")
- .HasColumnType("TEXT");
+ .HasColumnType("TEXT")
+ .HasMaxLength(64);
b.Property("SortOrder")
.HasColumnType("INTEGER");
diff --git a/Jellyfin.Server.Implementations/Migrations/20200630170339_AddDisplayPreferences.cs b/Jellyfin.Server.Implementations/Migrations/20200717233541_AddDisplayPreferences.cs
similarity index 88%
rename from Jellyfin.Server.Implementations/Migrations/20200630170339_AddDisplayPreferences.cs
rename to Jellyfin.Server.Implementations/Migrations/20200717233541_AddDisplayPreferences.cs
index e9a493d9db..3cfd02e070 100644
--- a/Jellyfin.Server.Implementations/Migrations/20200630170339_AddDisplayPreferences.cs
+++ b/Jellyfin.Server.Implementations/Migrations/20200717233541_AddDisplayPreferences.cs
@@ -1,7 +1,4 @@
-#pragma warning disable CS1591
-#pragma warning disable SA1601
-
-using System;
+using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace Jellyfin.Server.Implementations.Migrations
@@ -25,10 +22,14 @@ namespace Jellyfin.Server.Implementations.Migrations
SortOrder = table.Column(nullable: false),
ShowSidebar = table.Column(nullable: false),
ShowBackdrop = table.Column(nullable: false),
- SortBy = table.Column(nullable: true),
+ SortBy = table.Column(maxLength: 64, nullable: true),
ViewType = table.Column(nullable: true),
ScrollDirection = table.Column(nullable: false),
- IndexBy = table.Column(nullable: true)
+ IndexBy = table.Column(nullable: true),
+ SkipForwardLength = table.Column(nullable: false),
+ SkipBackwardLength = table.Column(nullable: false),
+ ChromecastVersion = table.Column(nullable: false),
+ EnableNextVideoInfoOverlay = table.Column(nullable: false)
},
constraints: table =>
{
diff --git a/Jellyfin.Server.Implementations/Migrations/JellyfinDbModelSnapshot.cs b/Jellyfin.Server.Implementations/Migrations/JellyfinDbModelSnapshot.cs
index 69b544e5ba..76de592ac7 100644
--- a/Jellyfin.Server.Implementations/Migrations/JellyfinDbModelSnapshot.cs
+++ b/Jellyfin.Server.Implementations/Migrations/JellyfinDbModelSnapshot.cs
@@ -94,11 +94,17 @@ namespace Jellyfin.Server.Implementations.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
+ b.Property("ChromecastVersion")
+ .HasColumnType("INTEGER");
+
b.Property("Client")
.IsRequired()
.HasColumnType("TEXT")
.HasMaxLength(64);
+ b.Property("EnableNextVideoInfoOverlay")
+ .HasColumnType("INTEGER");
+
b.Property("IndexBy")
.HasColumnType("INTEGER");
@@ -120,8 +126,15 @@ namespace Jellyfin.Server.Implementations.Migrations
b.Property("ShowSidebar")
.HasColumnType("INTEGER");
+ b.Property("SkipBackwardLength")
+ .HasColumnType("INTEGER");
+
+ b.Property("SkipForwardLength")
+ .HasColumnType("INTEGER");
+
b.Property("SortBy")
- .HasColumnType("TEXT");
+ .HasColumnType("TEXT")
+ .HasMaxLength(64);
b.Property("SortOrder")
.HasColumnType("INTEGER");
diff --git a/MediaBrowser.Api/DisplayPreferencesService.cs b/MediaBrowser.Api/DisplayPreferencesService.cs
index 5352bb36eb..877b124be5 100644
--- a/MediaBrowser.Api/DisplayPreferencesService.cs
+++ b/MediaBrowser.Api/DisplayPreferencesService.cs
@@ -134,6 +134,14 @@ namespace MediaBrowser.Api
prefs.RememberIndexing = request.RememberIndexing;
prefs.RememberSorting = request.RememberSorting;
prefs.ScrollDirection = request.ScrollDirection;
+ prefs.ChromecastVersion = request.CustomPrefs.TryGetValue("chromecastVersion", out var chromecastVersion)
+ ? Enum.Parse(chromecastVersion, true)
+ : ChromecastVersion.Stable;
+ prefs.EnableNextVideoInfoOverlay = request.CustomPrefs.TryGetValue("enableNextVideoInfoOverlay", out var enableNextVideoInfoOverlay)
+ ? bool.Parse(enableNextVideoInfoOverlay)
+ : true;
+ prefs.SkipBackwardLength = request.CustomPrefs.TryGetValue("skipBackLength", out var skipBackLength) ? int.Parse(skipBackLength) : 10000;
+ prefs.SkipForwardLength = request.CustomPrefs.TryGetValue("skipForwardLength", out var skipForwardLength) ? int.Parse(skipForwardLength) : 30000;
prefs.HomeSections.Clear();
foreach (var key in request.CustomPrefs.Keys.Where(key => key.StartsWith("homesection")))