diff --git a/src/components/SideBarBodyWrapper.tsx b/src/components/SideBarBodyWrapper.tsx index 63dd118..e9a6a98 100644 --- a/src/components/SideBarBodyWrapper.tsx +++ b/src/components/SideBarBodyWrapper.tsx @@ -6,6 +6,8 @@ import { defaultConfigs } from 'utils/config/helper' import { cx } from 'utils/cx' import { setCSSVariable } from 'utils/DOMHelper' import * as features from 'utils/features' +import { detectBrowser } from 'utils/general' +import { useConditionalHook } from '../utils/hooks/useConditionalHook' type Size = number export type Size2D = [Size, Size] @@ -36,6 +38,11 @@ export function SideBarBodyWrapper({ const configContext = useConfigs() const blockLeaveRef = React.useRef(false) + const heightForSafari = useConditionalHook( + () => detectBrowser() === 'Safari', + () => useWindowSize().height, + ) + React.useEffect(() => { setSize(baseSize) }, [baseSize]) @@ -95,11 +102,12 @@ export function SideBarBodyWrapper({ [onLeave], ) - const newLocal: [number, number] = React.useMemo(() => [size, size], [size]) + const dummySize: [number, number] = React.useMemo(() => [size, size], [size]) return (
{children}
@@ -113,7 +121,7 @@ export function SideBarBodyWrapper({ onResizeStateChange={state => { blockLeaveRef.current = state === 'resizing' }} - size={newLocal} + size={dummySize} /> )}
diff --git a/src/utils/general.ts b/src/utils/general.ts index 519abcf..619b889 100644 --- a/src/utils/general.ts +++ b/src/utils/general.ts @@ -34,6 +34,16 @@ function detectOS(): OperatingSystems { export const os = detectOS() +export const detectBrowser = () => { + const ua = navigator.userAgent.toLowerCase() + if (ua.includes('safari')) { + if (ua.includes('chrome')) return 'Chrome' + return 'Safari' + } + + return 'Other' +} + export function friendlyFormatShortcut(shortcut?: string) { if (!shortcut) return '' if (os === OperatingSystems.Windows) { diff --git a/src/utils/hooks/useConditionalHook.ts b/src/utils/hooks/useConditionalHook.ts new file mode 100644 index 0000000..613269d --- /dev/null +++ b/src/utils/hooks/useConditionalHook.ts @@ -0,0 +1,6 @@ +import * as React from "react"; + +export function useConditionalHook(condition: () => boolean, hook: () => T) { + const [use] = React.useState(condition) + if (use) return hook() +}