From ddafccca172951ca266e702e885cddc30307ead0 Mon Sep 17 00:00:00 2001 From: theborakompanioni Date: Sun, 11 Jan 2026 05:22:54 +0100 Subject: [PATCH] chore: initially display cheatsheet --- src/components/layout/AppFooter.tsx | 13 +++++++++++-- src/components/ui/jam/Cheatsheet.tsx | 6 +++--- src/store/jamSettingsStore.ts | 4 +++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/components/layout/AppFooter.tsx b/src/components/layout/AppFooter.tsx index 2a76aa99..2f2d3e8b 100644 --- a/src/components/layout/AppFooter.tsx +++ b/src/components/layout/AppFooter.tsx @@ -9,6 +9,7 @@ import { Dialog, DialogContent, DialogFooter } from '@/components/ui/dialog' import { Cheatsheet } from '@/components/ui/jam/Cheatsheet' import { useJmInfo } from '@/hooks/useJmInfo' import { toSemVer } from '@/lib/utils' +import { jamSettingsStore } from '@/store/jamSettingsStore' import { jmSessionStore } from '@/store/jmSessionStore' import packageInfo from '../../../package.json' @@ -45,11 +46,19 @@ const BetaWarningModal = ({ open, onOpenChange }: { open: boolean; onOpenChange: export function AppFooter() { const { t } = useTranslation() + const blockHeight = useStore(jmSessionStore, (state) => state.state?.block_height) - const [isCheatsheetOpen, setIsCheatsheetOpen] = useState(false) const [isShowBetaWarning, setShowBetaWarning] = useState(false) const [isOrderbookOverlayOpen, setIsOrderbookOverlayOpen] = useState(false) + const cheatsheetLastDisplayTime = useStore(jamSettingsStore, (state) => state.state.cheatsheetLastDisplayTime) + const [isCheatsheetOpen, setIsCheatsheetOpen] = useState(!cheatsheetLastDisplayTime) + + const handleCloseCheatsheet = () => { + jamSettingsStore.getState().update({ cheatsheetLastDisplayTime: Date.now() }) + setIsCheatsheetOpen(false) + } + return ( <> - {isCheatsheetOpen && } + {isCheatsheetOpen && } ) diff --git a/src/components/ui/jam/Cheatsheet.tsx b/src/components/ui/jam/Cheatsheet.tsx index ef8eca4a..a81b4129 100644 --- a/src/components/ui/jam/Cheatsheet.tsx +++ b/src/components/ui/jam/Cheatsheet.tsx @@ -7,17 +7,17 @@ import PageTitle from '@/components/ui/jam/PageTitle' import { routes } from '@/constants/routes' interface CheatsheetProps { - setIsCheatsheetOpen: (value: boolean) => void + onClose: () => void } -export const Cheatsheet = ({ setIsCheatsheetOpen }: CheatsheetProps) => { +export const Cheatsheet = ({ onClose }: CheatsheetProps) => { const { t } = useTranslation() const [isAnimating, setIsAnimating] = useState(false) const handleClose = () => { setIsAnimating(true) setTimeout(() => { - setIsCheatsheetOpen(false) + onClose() setIsAnimating(false) }, 333) } diff --git a/src/store/jamSettingsStore.ts b/src/store/jamSettingsStore.ts index ada46f6b..f23fe2a5 100644 --- a/src/store/jamSettingsStore.ts +++ b/src/store/jamSettingsStore.ts @@ -1,12 +1,13 @@ import { createStore } from 'zustand' import { persist, createJSONStorage } from 'zustand/middleware' import { isDevMode } from '@/constants/debugFeatures' -import type { Currency } from '@/types/global' +import type { Currency, Milliseconds } from '@/types/global' export type JamSettings = { developerMode: boolean privateMode: boolean currencyUnit: Currency + cheatsheetLastDisplayTime: Milliseconds | undefined } interface JamSettingsStoreState { @@ -19,6 +20,7 @@ const initial: JamSettings = { developerMode: isDevMode(), privateMode: false, currencyUnit: 'sats', + cheatsheetLastDisplayTime: undefined, } export const jamSettingsStore = createStore()(