From 09d6da4ad37d501b5ad0dccfd9612d18bc94982c Mon Sep 17 00:00:00 2001 From: Marcel Baumgartner Date: Wed, 12 Jun 2024 19:36:46 +0200 Subject: [PATCH] Added manual sorting for the docker images by id so the index matches always and does not depend on the mood of ef core I probably will add a global mapping for it in the data context --- .../Servers/Extensions/ServerExtensions.cs | 15 +++++++++++++-- .../Features/Servers/UI/UserViews/Variables.razor | 5 +++++ .../Servers/UI/Views/Admin/Images/View.razor | 5 +++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Moonlight/Features/Servers/Extensions/ServerExtensions.cs b/Moonlight/Features/Servers/Extensions/ServerExtensions.cs index 71ac96df..806cbe58 100644 --- a/Moonlight/Features/Servers/Extensions/ServerExtensions.cs +++ b/Moonlight/Features/Servers/Extensions/ServerExtensions.cs @@ -11,6 +11,11 @@ public static class ServerExtensions { public static ServerConfiguration ToServerConfiguration(this Server server) { + // Enforce id based docker image index + server.Image.DockerImages = server.Image.DockerImages + .OrderBy(x => x.Id) + .ToList(); + var serverConfiguration = new ServerConfiguration(); // Set general information @@ -33,9 +38,15 @@ public static class ServerExtensions ServerDockerImage dockerImage; if (server.DockerImageIndex >= server.Image.DockerImages.Count || server.DockerImageIndex == -1) - dockerImage = server.Image.DockerImages.Last(); + { + dockerImage = server.Image.DockerImages + .Last(); + } else - dockerImage = server.Image.DockerImages[server.DockerImageIndex]; + { + dockerImage = server.Image.DockerImages + .ElementAt(server.DockerImageIndex); + } serverConfiguration.Image.DockerImage = dockerImage.Name; serverConfiguration.Image.PullDockerImage = dockerImage.AutoPull; diff --git a/Moonlight/Features/Servers/UI/UserViews/Variables.razor b/Moonlight/Features/Servers/UI/UserViews/Variables.razor index edca0ee2..d96d9ff7 100644 --- a/Moonlight/Features/Servers/UI/UserViews/Variables.razor +++ b/Moonlight/Features/Servers/UI/UserViews/Variables.razor @@ -85,6 +85,11 @@ .Include(x => x.Variables) .Include(x => x.DockerImages) .First(x => x.Id == Server.Image.Id); + + // Enforce id based docker image index + Image.DockerImages = Image.DockerImages + .OrderBy(x => x.Id) + .ToList(); if (Server.DockerImageIndex >= Image.DockerImages.Count || Server.DockerImageIndex == -1) SelectedDockerImage = Image.DockerImages.Last(); diff --git a/Moonlight/Features/Servers/UI/Views/Admin/Images/View.razor b/Moonlight/Features/Servers/UI/Views/Admin/Images/View.razor index 4da460c8..83599c99 100644 --- a/Moonlight/Features/Servers/UI/Views/Admin/Images/View.razor +++ b/Moonlight/Features/Servers/UI/Views/Admin/Images/View.razor @@ -81,6 +81,11 @@ if (Image == null) return; + // Enforce id based docker image index + Image.DockerImages = Image.DockerImages + .OrderBy(x => x.Id) + .ToList(); + Form = Mapper.Map(Image); ParseConfigJson = Image.ParseConfiguration; }