Skip to content

Commit 224f55e

Browse files
committed
set banner cooldown for hiding
1 parent f2646dc commit 224f55e

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

client/modules/IDE/pages/IDEView.jsx

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ import useIsMobile from '../hooks/useIsMobile';
2929
import Banner from '../components/Banner';
3030
import { P5VersionProvider } from '../hooks/useP5Version';
3131

32+
const BANNER_DISMISS_KEY = 'bannerLastDismissedAt';
33+
const BANNER_COOLDOWN_MINUTES = 30;
34+
35+
function minutesSince(timestamp) {
36+
return (Date.now() - timestamp) / (1000 * 60);
37+
}
38+
3239
function getTitle(project) {
3340
const { id } = project;
3441
return id ? `p5.js Web Editor | ${project.name}` : 'p5.js Web Editor';
@@ -106,7 +113,7 @@ const IDEView = () => {
106113
const [sidebarSize, setSidebarSize] = useState(160);
107114
const [isOverlayVisible, setIsOverlayVisible] = useState(false);
108115
const [MaxSize, setMaxSize] = useState(window.innerWidth);
109-
const [displayBanner, setDisplayBanner] = useState(false);
116+
const [displayBanner, setDisplayBanner] = useState(true);
110117

111118
const cmRef = useRef({});
112119

@@ -151,6 +158,7 @@ const IDEView = () => {
151158
}
152159
};
153160
}, [shouldAutosave, dispatch]);
161+
154162
useEffect(() => {
155163
const updateInnerWidth = (e) => {
156164
setMaxSize(e.target.innerWidth);
@@ -163,6 +171,29 @@ const IDEView = () => {
163171
};
164172
}, [setMaxSize]);
165173

174+
// checks how long banner has been closed for to hide banner
175+
useEffect(() => {
176+
const stored = window.localStorage.getItem(BANNER_DISMISS_KEY);
177+
const lastClosedAt = stored ? Number(stored) : null;
178+
179+
if (!lastClosedAt) {
180+
setDisplayBanner(true);
181+
return;
182+
}
183+
184+
if (minutesSince(lastClosedAt) >= BANNER_COOLDOWN_MINUTES) {
185+
setDisplayBanner(true);
186+
} else {
187+
setDisplayBanner(false);
188+
}
189+
}, []);
190+
191+
const handleBannerClose = () => {
192+
setDisplayBanner(false);
193+
194+
window.localStorage.setItem(BANNER_DISMISS_KEY, String(Date.now()));
195+
};
196+
166197
const consoleCollapsedSize = 29;
167198
const currentConsoleSize = ide.consoleIsExpanded
168199
? consoleSize
@@ -173,7 +204,7 @@ const IDEView = () => {
173204
<Helmet>
174205
<title>{getTitle(project)}</title>
175206
</Helmet>
176-
{displayBanner && <Banner onClose={() => setDisplayBanner(false)} />}
207+
{displayBanner && <Banner onClose={handleBannerClose} />}
177208
<IDEKeyHandlers getContent={() => cmRef.current?.getContent()} />
178209
<WarnIfUnsavedChanges />
179210
<Toast />

0 commit comments

Comments
 (0)