diff --git a/src/components/GroupSwitch.tsx b/src/components/GroupSwitch.tsx index 9446785..0298634 100644 --- a/src/components/GroupSwitch.tsx +++ b/src/components/GroupSwitch.tsx @@ -37,6 +37,13 @@ export default function GroupSwitch({ } }, []) + useEffect(() => { + const savedGroup = sessionStorage.getItem("selectedGroup") + if (savedGroup && tabs.includes(savedGroup)) { + setCurrentTab(savedGroup) + } + }, [tabs, setCurrentTab]) + useEffect(() => { const currentTagRef = tagRefs.current[tabs.indexOf(currentTab)] diff --git a/src/components/Header.tsx b/src/components/Header.tsx index c77f5fe..6a9f6f3 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -60,7 +60,13 @@ function Header() { return (
-
navigate("/")} className="cursor-pointer flex items-center sm:text-base text-sm font-medium"> +
{ + sessionStorage.removeItem("selectedGroup") + navigate("/") + }} + className="cursor-pointer flex items-center sm:text-base text-sm font-medium" + >
("0") const [showMap, setShowMap] = useState("0") const [inline, setInline] = useState("0") + const containerRef = useRef(null) const [settingsOpen, setSettingsOpen] = useState(false) const [currentGroup, setCurrentGroup] = useState("All") @@ -39,6 +40,19 @@ export default function Servers() { // @ts-expect-error CustomBackgroundImage is a global variable (window.CustomBackgroundImage as string) !== "" ? window.CustomBackgroundImage : undefined + const restoreScrollPosition = () => { + const savedPosition = sessionStorage.getItem("scrollPosition") + if (savedPosition && containerRef.current) { + containerRef.current.scrollTop = Number(savedPosition) + } + } + + const handleTagChange = (newGroup: string) => { + setCurrentGroup(newGroup) + sessionStorage.setItem("selectedGroup", newGroup) + sessionStorage.setItem("scrollPosition", String(containerRef.current?.scrollTop || 0)) + } + useEffect(() => { const showServicesState = localStorage.getItem("showServices") if (showServicesState !== null) { @@ -53,6 +67,13 @@ export default function Servers() { } }, []) + useEffect(() => { + const savedGroup = sessionStorage.getItem("selectedGroup") || "All" + setCurrentGroup(savedGroup) + + restoreScrollPosition() + }, []) + const groupTabs = ["All", ...(groupData?.data?.map((item: ServerGroup) => item.group.name) || [])] if (!connected && !lastMessage) { @@ -233,7 +254,7 @@ export default function Servers() { > - +
@@ -306,14 +327,14 @@ export default function Servers() { {showMap === "1" && } {showServices === "1" && } {inline === "1" && ( -
+
{filteredServers.map((serverInfo) => ( ))}
)} {inline === "0" && ( -
+
{filteredServers.map((serverInfo) => ( ))}