my fork of the bluesky client

Move composer open shortcut to shell (#5723)

* move composer shortcut hook

* put intent handler in same place

* dont allow shortcuts if no session

* revert change

authored by hailey.at and committed by

GitHub 8e164274 eaba6584

+21 -9
-5
src/App.web.tsx
··· 9 import {msg} from '@lingui/macro' 10 import {useLingui} from '@lingui/react' 11 12 - import {useIntentHandler} from '#/lib/hooks/useIntentHandler' 13 import {QueryProvider} from '#/lib/react-query' 14 import {Provider as StatsigProvider} from '#/lib/statsig/statsig' 15 import {ThemeProvider} from '#/lib/ThemeContext' ··· 42 import {readLastActiveAccount} from '#/state/session/util' 43 import {Provider as ShellStateProvider} from '#/state/shell' 44 import {Provider as ComposerProvider} from '#/state/shell/composer' 45 - import {useComposerKeyboardShortcut} from '#/state/shell/composer/useComposerKeyboardShortcut' 46 import {Provider as LoggedOutViewProvider} from '#/state/shell/logged-out' 47 import {Provider as ProgressGuideProvider} from '#/state/shell/progress-guide' 48 import {Provider as SelectedFeedProvider} from '#/state/shell/selected-feed' ··· 72 const {resumeSession} = useSessionApi() 73 const theme = useColorModeTheme() 74 const {_} = useLingui() 75 - useIntentHandler() 76 const hasCheckedReferrer = useStarterPackEntry() 77 - 78 - useComposerKeyboardShortcut() 79 80 // init 81 useEffect(() => {
··· 9 import {msg} from '@lingui/macro' 10 import {useLingui} from '@lingui/react' 11 12 import {QueryProvider} from '#/lib/react-query' 13 import {Provider as StatsigProvider} from '#/lib/statsig/statsig' 14 import {ThemeProvider} from '#/lib/ThemeContext' ··· 41 import {readLastActiveAccount} from '#/state/session/util' 42 import {Provider as ShellStateProvider} from '#/state/shell' 43 import {Provider as ComposerProvider} from '#/state/shell/composer' 44 import {Provider as LoggedOutViewProvider} from '#/state/shell/logged-out' 45 import {Provider as ProgressGuideProvider} from '#/state/shell/progress-guide' 46 import {Provider as SelectedFeedProvider} from '#/state/shell/selected-feed' ··· 70 const {resumeSession} = useSessionApi() 71 const theme = useColorModeTheme() 72 const {_} = useLingui() 73 const hasCheckedReferrer = useStarterPackEntry() 74 75 // init 76 useEffect(() => {
+14 -1
src/state/shell/composer/useComposerKeyboardShortcut.tsx
··· 3 import {useDialogStateContext} from '#/state/dialogs' 4 import {useLightbox} from '#/state/lightbox' 5 import {useModals} from '#/state/modals' 6 import {useIsDrawerOpen} from '#/state/shell/drawer-open' 7 import {useComposerControls} from './' 8 ··· 43 const {isModalActive} = useModals() 44 const {activeLightbox} = useLightbox() 45 const isDrawerOpen = useIsDrawerOpen() 46 47 React.useEffect(() => { 48 function handler(event: KeyboardEvent) { 49 if (shouldIgnore(event)) return 50 if ( ··· 60 } 61 document.addEventListener('keydown', handler) 62 return () => document.removeEventListener('keydown', handler) 63 - }, [openComposer, isModalActive, openDialogs, activeLightbox, isDrawerOpen]) 64 }
··· 3 import {useDialogStateContext} from '#/state/dialogs' 4 import {useLightbox} from '#/state/lightbox' 5 import {useModals} from '#/state/modals' 6 + import {useSession} from '#/state/session' 7 import {useIsDrawerOpen} from '#/state/shell/drawer-open' 8 import {useComposerControls} from './' 9 ··· 44 const {isModalActive} = useModals() 45 const {activeLightbox} = useLightbox() 46 const isDrawerOpen = useIsDrawerOpen() 47 + const {hasSession} = useSession() 48 49 React.useEffect(() => { 50 + if (!hasSession) { 51 + return 52 + } 53 + 54 function handler(event: KeyboardEvent) { 55 if (shouldIgnore(event)) return 56 if ( ··· 66 } 67 document.addEventListener('keydown', handler) 68 return () => document.removeEventListener('keydown', handler) 69 + }, [ 70 + openComposer, 71 + isModalActive, 72 + openDialogs, 73 + activeLightbox, 74 + isDrawerOpen, 75 + hasSession, 76 + ]) 77 }
+7 -3
src/view/shell/index.web.tsx
··· 4 import {useLingui} from '@lingui/react' 5 import {useNavigation} from '@react-navigation/native' 6 7 import {useWebBodyScrollLock} from '#/lib/hooks/useWebBodyScrollLock' 8 import {useIsDrawerOpen, useSetDrawerOpen} from '#/state/shell' 9 import {useCloseAllActiveElements} from '#/state/util' 10 - import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' 11 - import {NavigationProp} from 'lib/routes/types' 12 - import {colors, s} from 'lib/styles' 13 import {MutedWordsDialog} from '#/components/dialogs/MutedWords' 14 import {SigninDialog} from '#/components/dialogs/Signin' 15 import {Outlet as PortalOutlet} from '#/components/Portal' ··· 30 const {_} = useLingui() 31 32 useWebBodyScrollLock(isDrawerOpen) 33 34 useEffect(() => { 35 const unsubscribe = navigator.addListener('state', () => {
··· 4 import {useLingui} from '@lingui/react' 5 import {useNavigation} from '@react-navigation/native' 6 7 + import {useColorSchemeStyle} from '#/lib/hooks/useColorSchemeStyle' 8 + import {useIntentHandler} from '#/lib/hooks/useIntentHandler' 9 import {useWebBodyScrollLock} from '#/lib/hooks/useWebBodyScrollLock' 10 + import {NavigationProp} from '#/lib/routes/types' 11 + import {colors, s} from '#/lib/styles' 12 import {useIsDrawerOpen, useSetDrawerOpen} from '#/state/shell' 13 + import {useComposerKeyboardShortcut} from '#/state/shell/composer/useComposerKeyboardShortcut' 14 import {useCloseAllActiveElements} from '#/state/util' 15 import {MutedWordsDialog} from '#/components/dialogs/MutedWords' 16 import {SigninDialog} from '#/components/dialogs/Signin' 17 import {Outlet as PortalOutlet} from '#/components/Portal' ··· 32 const {_} = useLingui() 33 34 useWebBodyScrollLock(isDrawerOpen) 35 + useComposerKeyboardShortcut() 36 + useIntentHandler() 37 38 useEffect(() => { 39 const unsubscribe = navigator.addListener('state', () => {