From 4813a6a47f1e7c004ee1bce5fcd25d3e1ea46a0b Mon Sep 17 00:00:00 2001 From: Meik Date: Mon, 10 Nov 2025 13:59:25 +0100 Subject: [PATCH] refactoring --- src/components/DashboardView.js | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/components/DashboardView.js b/src/components/DashboardView.js index f9c46e7..b749a41 100644 --- a/src/components/DashboardView.js +++ b/src/components/DashboardView.js @@ -1,4 +1,4 @@ -import { useEffect } from 'react'; +import { useEffect, useMemo } from 'react'; import NotificationPanel from './NotificationPanel'; const DashboardView = ({ @@ -70,6 +70,28 @@ const DashboardView = ({ ntfyPreviewUrl } = notificationProps; + const sortedStores = useMemo(() => { + const list = Array.isArray(stores) ? [...stores] : []; + return list.sort((a, b) => { + const aId = a?.id != null ? String(a.id) : ''; + const bId = b?.id != null ? String(b.id) : ''; + const aInConfig = configMap?.has(aId); + const bInConfig = configMap?.has(bId); + if (aInConfig !== bInConfig) { + return aInConfig ? 1 : -1; + } + const nameA = (a?.name || '').toLocaleLowerCase('de-DE'); + const nameB = (b?.name || '').toLocaleLowerCase('de-DE'); + if (nameA < nameB) { + return -1; + } + if (nameA > nameB) { + return 1; + } + return 0; + }); + }, [stores, configMap]); + return (

Foodsharing Pickup Manager

@@ -153,7 +175,7 @@ const DashboardView = ({ {!availableCollapsed && (
- {stores.map((store) => { + {sortedStores.map((store) => { const storeId = String(store.id); const entry = configMap.get(storeId); const isVisible = entry && !entry.hidden;