From b72af98a1b312bd49c6f1134575fe5170151abea Mon Sep 17 00:00:00 2001 From: jeffvli Date: Thu, 4 Dec 2025 21:43:08 -0800 Subject: [PATCH] maintain defined order on reorder configurations (#1322) --- .../components/general/artist-settings.tsx | 31 +++++----------- .../components/general/home-settings.tsx | 31 +++++----------- .../components/general/sidebar-reorder.tsx | 35 ++++++------------- 3 files changed, 29 insertions(+), 68 deletions(-) diff --git a/src/renderer/features/settings/components/general/artist-settings.tsx b/src/renderer/features/settings/components/general/artist-settings.tsx index 076bcbeb9..a174e6fb5 100644 --- a/src/renderer/features/settings/components/general/artist-settings.tsx +++ b/src/renderer/features/settings/components/general/artist-settings.tsx @@ -25,30 +25,17 @@ export const ArtistSettings = () => { artistItems.map((item) => [item.id, item as SortableItem]), ); - const merged = ARTIST_ITEMS.map(([itemId]) => { + const merged = artistItems.map((item) => ({ + ...item, + id: item.id as ArtistItem, + })); + + ARTIST_ITEMS.forEach(([itemId]) => { const artistItemId = itemId as ArtistItem; - const existing = settingsMap.get(artistItemId); - if (existing) { - return { - ...existing, - id: artistItemId, - }; - } - - // Item not in settings, add it as disabled - return { - disabled: true, - id: artistItemId, - }; - }); - - // Add any items from settings that aren't in ARTIST_ITEMS (for backwards compatibility) - artistItems.forEach((item) => { - const existsInArtistItems = ARTIST_ITEMS.some(([itemId]) => itemId === item.id); - if (!existsInArtistItems) { + if (!settingsMap.has(artistItemId)) { merged.push({ - ...item, - id: item.id as ArtistItem, + disabled: true, + id: artistItemId, }); } }); diff --git a/src/renderer/features/settings/components/general/home-settings.tsx b/src/renderer/features/settings/components/general/home-settings.tsx index 09dae4144..4ba73f953 100644 --- a/src/renderer/features/settings/components/general/home-settings.tsx +++ b/src/renderer/features/settings/components/general/home-settings.tsx @@ -26,30 +26,17 @@ export const HomeSettings = () => { homeItems.map((item) => [item.id, item as SortableItem]), ); - const merged = HOME_ITEMS.map(([itemId]) => { + const merged = homeItems.map((item) => ({ + ...item, + id: item.id as HomeItem, + })); + + HOME_ITEMS.forEach(([itemId]) => { const homeItemId = itemId as HomeItem; - const existing = settingsMap.get(homeItemId); - if (existing) { - return { - ...existing, - id: homeItemId, - }; - } - - // Item not in settings, add it as disabled - return { - disabled: true, - id: homeItemId, - }; - }); - - // Add any items from settings that aren't in HOME_ITEMS (for backwards compatibility) - homeItems.forEach((item) => { - const existsInHomeItems = HOME_ITEMS.some(([itemId]) => itemId === item.id); - if (!existsInHomeItems) { + if (!settingsMap.has(homeItemId)) { merged.push({ - ...item, - id: item.id as HomeItem, + disabled: true, + id: homeItemId, }); } }); diff --git a/src/renderer/features/settings/components/general/sidebar-reorder.tsx b/src/renderer/features/settings/components/general/sidebar-reorder.tsx index 4b4b50322..da39df929 100644 --- a/src/renderer/features/settings/components/general/sidebar-reorder.tsx +++ b/src/renderer/features/settings/components/general/sidebar-reorder.tsx @@ -30,32 +30,19 @@ export const SidebarReorder = () => { const settingsMap = new Map(sidebarItems.map((item) => [item.id, item])); const defaultMap = new Map(defaultSidebarItems.map((item) => [item.id, item])); - const merged = SIDEBAR_ITEMS.map(([itemId]) => { - const existing = settingsMap.get(itemId); - if (existing) { - return { - ...existing, - id: itemId, - }; - } + const merged = sidebarItems.map((item) => ({ + ...item, + id: item.id, + })); - // Item not in settings, get default values and add it as disabled - const defaultItem = defaultMap.get(itemId); - return { - disabled: true, - id: itemId, - label: defaultItem?.label ?? itemId, - route: defaultItem?.route ?? '', - }; - }); - - // Add any items from settings that aren't in SIDEBAR_ITEMS (for backwards compatibility) - sidebarItems.forEach((item) => { - const existsInSidebarItems = SIDEBAR_ITEMS.some(([itemId]) => itemId === item.id); - if (!existsInSidebarItems) { + SIDEBAR_ITEMS.forEach(([itemId]) => { + if (!settingsMap.has(itemId)) { + const defaultItem = defaultMap.get(itemId); merged.push({ - ...item, - id: item.id, + disabled: true, + id: itemId, + label: defaultItem?.label ?? itemId, + route: defaultItem?.route ?? '', }); } });