From 92d456dbf4fab4c5b19da9730da5560ff55fbbdc Mon Sep 17 00:00:00 2001
From: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date: Mon, 21 Nov 2022 00:29:20 -0800
Subject: [PATCH] fix group sort to prevent possible loss

---
 src/utils/config/api-response.js | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/utils/config/api-response.js b/src/utils/config/api-response.js
index 645f45c6..b8de959f 100644
--- a/src/utils/config/api-response.js
+++ b/src/utils/config/api-response.js
@@ -76,7 +76,8 @@ export async function servicesResponse() {
     ...new Set([discoveredServices.map((group) => group.name), configuredServices.map((group) => group.name)].flat()),
   ];
 
-  const mergedGroups = [];
+  const sortedGroups = [];
+  const unsortedGroups = [];
   const definedLayouts = initialSettings.layout ? Object.keys(initialSettings.layout) : null;
 
   mergedGroupsNames.forEach((groupName) => {
@@ -90,12 +91,12 @@ export async function servicesResponse() {
 
     if (definedLayouts) {
       const layoutIndex = definedLayouts.findIndex(layout => layout === mergedGroup.name);
-      if (layoutIndex > -1) mergedGroups[layoutIndex] = mergedGroup;
-      else mergedGroups.push(mergedGroup);
+      if (layoutIndex > -1) sortedGroups[layoutIndex] = mergedGroup;
+      else unsortedGroups.push(mergedGroup);
     } else {
-      mergedGroups.push(mergedGroup);
+      unsortedGroups.push(mergedGroup);
     }
   });
 
-  return mergedGroups.filter(g => g);
+  return [...sortedGroups.filter(g => g), ...unsortedGroups];
 }