From 788b44c7c9ba45c9a2e935d4f49cd7b477713ba6 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Tue, 13 Aug 2024 16:41:24 +0800 Subject: [PATCH] Use router instead of window.location to better handle the local cache --- .../components/elements/images/OmnivoreLogoBase.tsx | 8 +++++--- .../templates/article/PdfArticleContainer.tsx | 13 +++++++------ packages/web/lib/hooks/useHandleAddUrl.ts | 4 +++- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/packages/web/components/elements/images/OmnivoreLogoBase.tsx b/packages/web/components/elements/images/OmnivoreLogoBase.tsx index 94c3fae86..6a244ad26 100644 --- a/packages/web/components/elements/images/OmnivoreLogoBase.tsx +++ b/packages/web/components/elements/images/OmnivoreLogoBase.tsx @@ -10,6 +10,8 @@ export type OmnivoreLogoBaseProps = { } export function OmnivoreLogoBase(props: OmnivoreLogoBaseProps): JSX.Element { + const router = useRouter() + return ( { const navReturn = window.localStorage.getItem('nav-return') if (navReturn) { - window.location.assign(navReturn) + router.push(navReturn) return } const query = window.sessionStorage.getItem('q') if (query) { - window.location.assign(`${DEFAULT_HOME_PATH}?${query}`) + router.push(`${DEFAULT_HOME_PATH}?${query}`) } else { - window.location.replace(DEFAULT_HOME_PATH) + router.push(DEFAULT_HOME_PATH) } }} tabIndex={-1} diff --git a/packages/web/components/templates/article/PdfArticleContainer.tsx b/packages/web/components/templates/article/PdfArticleContainer.tsx index 32713da06..4e63e694f 100644 --- a/packages/web/components/templates/article/PdfArticleContainer.tsx +++ b/packages/web/components/templates/article/PdfArticleContainer.tsx @@ -27,6 +27,7 @@ import { useMergeHighlight, useUpdateHighlight, } from '../../../lib/networking/highlights/useItemHighlights' +import { useRouter } from 'next/router' export type PdfArticleContainerProps = { viewer: UserBasicData @@ -38,12 +39,12 @@ export type PdfArticleContainerProps = { export default function PdfArticleContainer( props: PdfArticleContainerProps ): JSX.Element { + const router = useRouter() const containerRef = useRef(null) const [notebookKey, setNotebookKey] = useState(uuidv4()) const [noteTarget, setNoteTarget] = useState(undefined) - const [noteTargetPageIndex, setNoteTargetPageIndex] = useState< - number | undefined - >(undefined) + const [noteTargetPageIndex, setNoteTargetPageIndex] = + useState(undefined) const highlightsRef = useRef([]) const createHighlight = useCreateHighlight() const deleteHighlight = useDeleteHighlight() @@ -481,14 +482,14 @@ export default function PdfArticleContainer( case 'u': const navReturn = window.localStorage.getItem('nav-return') if (navReturn) { - window.location.assign(navReturn) + router.push(navReturn) return } const query = window.sessionStorage.getItem('q') if (query) { - window.location.assign(`${DEFAULT_HOME_PATH}?${query}`) + router.push(`${DEFAULT_HOME_PATH}?${query}`) } else { - window.location.replace(DEFAULT_HOME_PATH) + router.push(DEFAULT_HOME_PATH) } break case 'e': diff --git a/packages/web/lib/hooks/useHandleAddUrl.ts b/packages/web/lib/hooks/useHandleAddUrl.ts index 577f74f29..4b47508ce 100644 --- a/packages/web/lib/hooks/useHandleAddUrl.ts +++ b/packages/web/lib/hooks/useHandleAddUrl.ts @@ -2,8 +2,10 @@ import { useCallback } from 'react' import { v4 as uuidv4 } from 'uuid' import { useAddItem } from '../networking/library_items/useLibraryItems' import { showErrorToast, showSuccessToastWithAction } from '../toastHelpers' +import { useRouter } from 'next/router' export const useHandleAddUrl = () => { + const router = useRouter() const addItem = useAddItem() return useCallback(async (url: string, timezone: string, locale: string) => { const itemId = uuidv4() @@ -16,7 +18,7 @@ export const useHandleAddUrl = () => { console.log('result: ', result) if (result) { showSuccessToastWithAction('Item saving', 'Read now', async () => { - window.location.href = `/article?url=${encodeURIComponent(url)}` + router.push(`/article?url=${encodeURIComponent(url)}`) return Promise.resolve() }) } else {