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()(