From d173492fd00d5392753fe500bbea415d7c12ae9d Mon Sep 17 00:00:00 2001 From: Carter Date: Tue, 1 Apr 2025 09:18:18 -0600 Subject: [PATCH] bin yard tab order is now saved to cache --- src/common/DraggableTabs.tsx | 30 ++++++++++++++++++++++++++++-- src/common/PulseBox.tsx | 2 +- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/common/DraggableTabs.tsx b/src/common/DraggableTabs.tsx index dae48c2..c85bee9 100644 --- a/src/common/DraggableTabs.tsx +++ b/src/common/DraggableTabs.tsx @@ -1,4 +1,6 @@ import { Tabs, TabsProps } from "@mui/material"; +import { getContextKeys, getContextTypes } from "pbHelpers/Context"; +import { useGlobalState } from "providers"; import React, { useEffect, useState, useRef } from "react"; // import AnimatedTabs from "./AnimatedTabs"; @@ -12,13 +14,37 @@ export default function DraggableTabs(props: DraggableTabsProps) { const { startNode, endNode, children, ...tabsProps } = props; const [selectedValue, setSelectedValue] = useState(tabsProps.value); const initialChildren = React.Children.toArray(children); - const [tabOrder, setTabOrder] = useState([]); + // const [tabOrder, setTabOrder] = useState([]); const [hoveredIndex, setHoveredIndex] = useState(-1); // Track hovered tab const tabRefs = useRef<(HTMLDivElement | null)[]>([]); // Refs for each tab + const [{ as, user }] = useGlobalState() + + // cache key should be unique for the context and user + let cacheKey = "tab-order-" + const types = getContextTypes() + getContextKeys().forEach((key, index) => { + cacheKey = cacheKey + types[index] + "-" + key + "-" + }) + cacheKey = cacheKey + (as ? as : user.id()) + + // Get tab order from cache + const [tabOrder, setTabOrder] = useState(() => { + const storedValue = localStorage.getItem(cacheKey); + console.log(storedValue) + console.log(JSON.parse(storedValue!)) + console.log(storedValue !== null) + return storedValue !== null ? JSON.parse(storedValue) : []; + }); + + // save tab order to cache when it changes + useEffect(() => { + console.log(tabOrder) + localStorage.setItem(cacheKey, JSON.stringify(tabOrder)); + }, [tabOrder]); useEffect(() => { const newOrder = initialChildren.map((_, index) => index); - setTabOrder(newOrder); + if (tabOrder.length < 1) setTabOrder(newOrder); tabRefs.current = new Array(newOrder.length).fill(null); // Initialize refs }, [initialChildren.length]); diff --git a/src/common/PulseBox.tsx b/src/common/PulseBox.tsx index 11c43e8..2cdc5ce 100644 --- a/src/common/PulseBox.tsx +++ b/src/common/PulseBox.tsx @@ -17,7 +17,7 @@ const useStyles = makeStyles((_theme: Theme) => ({ height: '100%', border: '2px solid var(--pulse-color)', borderRadius: 'inherit', // Should inherit from Box - animation: '$pulse 2s infinite ease-in-out', + animation: '$pulse 1.75s infinite ease-in-out', pointerEvents: 'none', boxSizing: 'border-box', transition: "border-color 0.35s ease-in-out",