From 790f79d966afbe99072d52fff1f72454e04e93b0 Mon Sep 17 00:00:00 2001 From: lyc8503 Date: Sat, 31 May 2025 21:46:21 +0800 Subject: [PATCH] feat #115: keep group state on refresh --- components/MonitorList.tsx | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/components/MonitorList.tsx b/components/MonitorList.tsx index f1f9d2f..fdaf7e9 100644 --- a/components/MonitorList.tsx +++ b/components/MonitorList.tsx @@ -2,6 +2,7 @@ import { MonitorState, MonitorTarget } from '@/types/config' import { Accordion, Card, Center, Text } from '@mantine/core' import MonitorDetail from './MonitorDetail' import { pageConfig } from '@/uptime.config' +import { useEffect, useState } from 'react' function countDownCount(state: MonitorState, ids: string[]) { let downCount = 0 @@ -35,15 +36,28 @@ export default function MonitorList({ monitors: MonitorTarget[] state: MonitorState }) { - // @ts-ignore - let group: any = pageConfig.group - let groupedMonitor = group && Object.keys(group).length > 0 + const group = pageConfig.group + const groupedMonitor = group && Object.keys(group).length > 0 let content + // Load expanded groups from localStorage + const savedExpandedGroups = localStorage.getItem('expandedGroups') + const expandedInitial = savedExpandedGroups ? JSON.parse(savedExpandedGroups) : Object.keys(group || {}) + const [expandedGroups, setExpandedGroups] = useState(expandedInitial) + useEffect(() => { + localStorage.setItem('expandedGroups', JSON.stringify(expandedGroups)) + }, [expandedGroups]) + if (groupedMonitor) { // Grouped monitors content = ( - + setExpandedGroups(values)} + > {Object.keys(group).map((groupName) => (