maintain defined order on reorder configurations (#1322)

This commit is contained in:
jeffvli
2025-12-04 21:43:08 -08:00
parent d463030271
commit b72af98a1b
3 changed files with 29 additions and 68 deletions
@@ -25,30 +25,17 @@ export const ArtistSettings = () => {
artistItems.map((item) => [item.id, item as SortableItem<ArtistItem>]),
);
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,
});
}
});
@@ -26,30 +26,17 @@ export const HomeSettings = () => {
homeItems.map((item) => [item.id, item as SortableItem<HomeItem>]),
);
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,
});
}
});
@@ -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 ?? '',
});
}
});