From a57dad444dfd993bdfdb5df6f2caa2546c38988f Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Sat, 25 Feb 2023 08:51:25 +0800 Subject: [PATCH] Move keyboard commands from header into layout --- .../web/components/patterns/PrimaryHeader.tsx | 59 ++++---------- .../components/templates/PrimaryLayout.tsx | 31 ++++---- .../templates/homeFeed/HomeFeedContainer.tsx | 10 --- .../templates/homeFeed/LibraryHeader.tsx | 2 +- packages/web/pages/_document.tsx | 79 ++++++++++++++----- 5 files changed, 92 insertions(+), 89 deletions(-) diff --git a/packages/web/components/patterns/PrimaryHeader.tsx b/packages/web/components/patterns/PrimaryHeader.tsx index cb8f65a81..ac413f622 100644 --- a/packages/web/components/patterns/PrimaryHeader.tsx +++ b/packages/web/components/patterns/PrimaryHeader.tsx @@ -27,34 +27,6 @@ export function PrimaryHeader(props: HeaderProps): JSX.Element { const router = useRouter() const [isScrolled, setIsScrolled] = useState(false) - useKeyboardShortcuts( - primaryCommands((action) => { - switch (action) { - // case 'themeDarker': - // darkenTheme() - // break - // case 'themeLighter': - // lightenTheme() - // break - case 'toggleShortcutHelpModalDisplay': - props.setShowKeyboardCommandsModal(true) - break - } - }) - ) - - const initAnalytics = useCallback(() => { - setupAnalytics(props.user) - }, [props.user]) - - useEffect(() => { - initAnalytics() - window.addEventListener('load', initAnalytics) - return () => { - window.removeEventListener('load', initAnalytics) - } - }, [initAnalytics]) - function headerDropdownActionHandler(action: HeaderDropdownAction): void { switch (action) { case 'apply-darker-theme': @@ -108,12 +80,14 @@ export function PrimaryHeader(props: HeaderProps): JSX.Element { return ( <> - + - + @@ -256,7 +232,7 @@ function FloatingNavHeader(props: NavHeaderProps): JSX.Element { right: '18px', position: 'fixed', display: 'flex', - alignItems: 'center' + alignItems: 'center', }} > ) } - diff --git a/packages/web/components/templates/PrimaryLayout.tsx b/packages/web/components/templates/PrimaryLayout.tsx index 32fab35df..090f23b94 100644 --- a/packages/web/components/templates/PrimaryLayout.tsx +++ b/packages/web/components/templates/PrimaryLayout.tsx @@ -10,6 +10,8 @@ import { Analytics } from '@segment/analytics-next' import { ConfirmationModal } from '../patterns/ConfirmationModal' import { KeyboardShortcutListModal } from './KeyboardShortcutListModal' import { logoutMutation } from '../../lib/networking/mutations/logoutMutation' +import { setupAnalytics } from '../../lib/analytics' +import { primaryCommands } from '../../lib/keyboardShortcuts/navigationShortcuts' type PrimaryLayoutProps = { children: ReactNode @@ -29,8 +31,20 @@ export function PrimaryLayout(props: PrimaryLayoutProps): JSX.Element { useKeyboardShortcuts(navigationCommands(router)) + useKeyboardShortcuts( + primaryCommands((action) => { + switch (action) { + case 'toggleShortcutHelpModalDisplay': + setShowKeyboardCommandsModal(true) + break + } + }) + ) + // Attempt to identify the user if they are logged in. useEffect(() => { + setupAnalytics(viewerData?.me) + const user = window.analytics?.user().id() if (!user && viewerData?.me?.id) { window.analytics?.identify({ userId: viewerData?.me?.id }) @@ -66,17 +80,6 @@ export function PrimaryLayout(props: PrimaryLayoutProps): JSX.Element { }, }} > - {/* */} - {/* */} {props.children} {showLogoutConfirmation ? ( - {/* Temporary code */} - {/*
- Files: -
    - {uploadingFiles.map((fileName) => ( -
  • {fileName}
  • - ))} -
-
*/} - {/* Temporary code */} {props.showAddLinkModal && ( props.setShowAddLinkModal(false)} /> )} diff --git a/packages/web/components/templates/homeFeed/LibraryHeader.tsx b/packages/web/components/templates/homeFeed/LibraryHeader.tsx index 9911fbb1d..0741f5da7 100644 --- a/packages/web/components/templates/homeFeed/LibraryHeader.tsx +++ b/packages/web/components/templates/homeFeed/LibraryHeader.tsx @@ -48,7 +48,7 @@ export function LibraryHeader(props: LibraryHeaderProps): JSX.Element { css={{ top: '0', left: '0', - zIndex: 100, + zIndex: 5, position: 'fixed', width: '100%', height: HEADER_HEIGHT, diff --git a/packages/web/pages/_document.tsx b/packages/web/pages/_document.tsx index 927d240dc..c6fb0cf50 100644 --- a/packages/web/pages/_document.tsx +++ b/packages/web/pages/_document.tsx @@ -1,7 +1,9 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ /* eslint-disable functional/no-class */ import NextDocument, { Html, Head, Main, NextScript } from 'next/document' +import { useCallback } from 'react' import { getCssText, globalStyles } from '../components/tokens/stitches.config' +import { setupAnalytics } from '../lib/analytics' export default class Document extends NextDocument { render() { @@ -53,25 +55,61 @@ export default class Document extends NextDocument {