diff --git a/source/src/pages/Page/index.tsx b/source/src/pages/Page/index.tsx index f89ae5b..65a11cc 100644 --- a/source/src/pages/Page/index.tsx +++ b/source/src/pages/Page/index.tsx @@ -43,12 +43,6 @@ enum PageType { UNSEARCHABLE, } -interface SeriesData { - seriesHome: string - prev?: string - next?: string -} - const fetchContent = async (pageType: PageType, url: string) => { try { if (pageType == PageType.UNSEARCHABLE) { @@ -76,12 +70,6 @@ const Page = () => { const [pageType, setPageType] = useState(PageType.POST) const [isLoading, setIsLoading] = useState(true) - // only used when the page is a series post - // todo: merge with pageData - const [seriesData, setSeriesData] = useState( - undefined - ) - useEffect(() => { const url = location.pathname.replace(/\/$/, "") // remove trailing slash const _pageType = categorizePageType(url) @@ -136,6 +124,8 @@ const Page = () => { toc: undefined, content: "No content", + seriesHome: "", + image: "", overview: "", badges: [], @@ -171,18 +161,6 @@ const Page = () => { const prev = curr - 1 const next = curr + 1 - setSeriesData({ - seriesHome: seriesURL, - prev: - prev >= 0 - ? map.series[seriesURL].order[prev] - : undefined, - next: - next < map.series[seriesURL].order.length - ? map.series[seriesURL].order[next] - : undefined, - }) - const post = map.posts[url] pageData.content = fetched_content.content @@ -194,6 +172,16 @@ const Page = () => { pageData.wordCount = post.wordCount pageData.tags = post.tags || [] + pageData.seriesHome = seriesURL + pageData.prev = + prev >= 0 + ? map.series[seriesURL].order[prev] + : undefined + pageData.next = + next < map.series[seriesURL].order.length + ? map.series[seriesURL].order[next] + : undefined + break } @@ -251,8 +239,8 @@ const Page = () => { {/* next/previous series post buttons */} {pageType == PageType.SERIES && ( )} diff --git a/source/types/types.ts b/source/types/types.ts index afa79fd..1cbd2f0 100644 --- a/source/types/types.ts +++ b/source/types/types.ts @@ -62,6 +62,11 @@ export interface PageData { toc?: string content: string + // series-specific data + seriesHome: string + prev?: string + next?: string + // portfolio-specific data image: string // image url