@@ -18,7 +18,6 @@ import { NotionRenderer } from 'react-notion-x'
18
18
import { getBlockTitle , getPageProperty , formatDate } from 'notion-utils'
19
19
import { mapPageUrl , getCanonicalPageUrl } from 'lib/map-page-url'
20
20
import { mapImageUrl } from 'lib/map-image-url'
21
- import { getPageTweet } from 'lib/get-page-tweet'
22
21
import { searchNotion } from 'lib/search-notion'
23
22
import * as types from 'lib/types'
24
23
import * as config from 'lib/config'
@@ -27,9 +26,8 @@ import * as config from 'lib/config'
27
26
import { Loading } from './Loading'
28
27
import { Page404 } from './Page404'
29
28
import { PageHead } from './PageHead'
30
- import { PageActions } from './PageActions '
29
+ import { PageAside } from './PageAside '
31
30
import { Footer } from './Footer'
32
- import { PageSocial } from './PageSocial'
33
31
import { NotionPageHeader } from './NotionPageHeader'
34
32
import { GitHubShareButton } from './GitHubShareButton'
35
33
@@ -180,6 +178,7 @@ export const NotionPage: React.FC<types.PageProps> = ({
180
178
const isLiteMode = lite === 'true'
181
179
182
180
const { resolvedTheme } = useTheme ( )
181
+ const isDarkMode = resolvedTheme === 'dark'
183
182
184
183
const siteMapPageUrl = React . useMemo ( ( ) => {
185
184
const params : any = { }
@@ -189,14 +188,30 @@ export const NotionPage: React.FC<types.PageProps> = ({
189
188
return mapPageUrl ( site , recordMap , searchParams )
190
189
} , [ site , recordMap , lite ] )
191
190
191
+ const keys = Object . keys ( recordMap ?. block || { } )
192
+ const block = recordMap ?. block ?. [ keys [ 0 ] ] ?. value
193
+
194
+ // const isRootPage =
195
+ // parsePageId(block?.id) === parsePageId(site?.rootNotionPageId)
196
+ const isBlogPost =
197
+ block ?. type === 'page' && block ?. parent_table === 'collection'
198
+ const showTableOfContents = ! ! isBlogPost
199
+ const minTableOfContentsItems = 3
200
+
201
+ const pageAside = React . useMemo (
202
+ ( ) => (
203
+ < PageAside block = { block } recordMap = { recordMap } isBlogPost = { isBlogPost } />
204
+ ) ,
205
+ [ block , recordMap , isBlogPost ]
206
+ )
207
+
208
+ const footer = React . useMemo ( ( ) => < Footer /> , [ ] )
209
+
192
210
if ( router . isFallback ) {
193
211
return < Loading />
194
212
}
195
213
196
- const keys = Object . keys ( recordMap ?. block || { } )
197
- const block = recordMap ?. block ?. [ keys [ 0 ] ] ?. value
198
-
199
- if ( error || ! site || ! keys . length || ! block ) {
214
+ if ( error || ! site || ! block ) {
200
215
return < Page404 site = { site } pageId = { pageId } error = { error } />
201
216
}
202
217
@@ -221,13 +236,6 @@ export const NotionPage: React.FC<types.PageProps> = ({
221
236
const canonicalPageUrl =
222
237
! config . isDev && getCanonicalPageUrl ( site , recordMap ) ( pageId )
223
238
224
- // const isRootPage =
225
- // parsePageId(block.id) === parsePageId(site.rootNotionPageId)
226
- const isBlogPost =
227
- block . type === 'page' && block . parent_table === 'collection'
228
- const showTableOfContents = ! ! isBlogPost
229
- const minTableOfContentsItems = 3
230
-
231
239
const socialImage = mapImageUrl (
232
240
getPageProperty < string > ( 'Social Image' , block , recordMap ) ||
233
241
( block as PageBlock ) . format ?. page_cover ||
@@ -239,18 +247,6 @@ export const NotionPage: React.FC<types.PageProps> = ({
239
247
getPageProperty < string > ( 'Description' , block , recordMap ) ||
240
248
config . description
241
249
242
- let pageAside : React . ReactNode = null
243
-
244
- // only display comments and page actions on blog post pages
245
- if ( isBlogPost ) {
246
- const tweet = getPageTweet ( block , recordMap )
247
- if ( tweet ) {
248
- pageAside = < PageActions tweet = { tweet } />
249
- }
250
- } else {
251
- pageAside = < PageSocial />
252
- }
253
-
254
250
return (
255
251
< >
256
252
< PageHead
@@ -263,6 +259,7 @@ export const NotionPage: React.FC<types.PageProps> = ({
263
259
/>
264
260
265
261
{ isLiteMode && < BodyClassName className = 'notion-lite' /> }
262
+ { isDarkMode && < BodyClassName className = 'dark-mode' /> }
266
263
267
264
< NotionRenderer
268
265
bodyClassName = { cs (
@@ -274,7 +271,6 @@ export const NotionPage: React.FC<types.PageProps> = ({
274
271
rootPageId = { site . rootNotionPageId }
275
272
rootDomain = { site . domain }
276
273
fullPage = { ! isLiteMode }
277
- darkMode = { resolvedTheme === 'dark' }
278
274
previewImages = { ! ! recordMap . preview_images }
279
275
showCollectionViewDropdown = { false }
280
276
showTableOfContents = { showTableOfContents }
@@ -286,7 +282,7 @@ export const NotionPage: React.FC<types.PageProps> = ({
286
282
mapImageUrl = { mapImageUrl }
287
283
searchNotion = { config . isSearchEnabled ? searchNotion : null }
288
284
pageAside = { pageAside }
289
- footer = { < Footer /> }
285
+ footer = { footer }
290
286
/>
291
287
292
288
< GitHubShareButton />
0 commit comments