Bluesky app fork with some witchin' additions 馃挮 witchsky.app
bluesky fork client
119
fork

Configure Feed

Select the types of activity you want to include in your feed.

at a876aae44ea07494ebea9727350aa060b81f317b 39 lines 1.2 kB view raw
1import {useEffect, useState} from 'react' 2 3import {useSession} from '#/state/session' 4import {IS_WEB} from '#/env' 5 6export function useWelcomeModal() { 7 const {hasSession} = useSession() 8 const [isOpen, setIsOpen] = useState(false) 9 10 const open = () => setIsOpen(true) 11 const close = () => setIsOpen(false) 12 13 useEffect(() => { 14 // Only show modal if: 15 // 1. User is not logged in 16 // 2. We're on the web (this is a web-only feature) 17 // 3. We're on the homepage (path is '/' or '/home') 18 // 4. Modal hasn't been shown before 19 if (IS_WEB && !hasSession && typeof window !== 'undefined') { 20 const currentPath = window.location.pathname 21 const isHomePage = currentPath === '/' 22 const hasModalBeenShown = 23 localStorage.getItem('welcomeModalShown') === 'true' 24 25 if (isHomePage && !hasModalBeenShown) { 26 // Mark that the modal has been shown, don't show again 27 localStorage.setItem('welcomeModalShown', 'true') 28 // Small delay to ensure the page has loaded 29 const timer = setTimeout(() => { 30 open() 31 }, 1000) 32 33 return () => clearTimeout(timer) 34 } 35 } 36 }, [hasSession]) 37 38 return {isOpen, open, close} 39}