1
- import React , { useState , useEffect } from 'react' ;
1
+ import React , { useState , useEffect , useMemo } from 'react' ;
2
2
import styled from 'styled-components' ;
3
3
import PostCard , { PostCardSkeleton } from './PostCard' ;
4
4
import { PartialPost } from '../../lib/graphql/post' ;
@@ -12,19 +12,30 @@ export type PostCardGridProps = {
12
12
} ;
13
13
14
14
function PostCardGrid ( { posts, loading, forHome } : PostCardGridProps ) {
15
- const [ adVisible , setAdVisible ] = useState ( false ) ;
16
- useEffect ( ( ) => {
17
- if ( localStorage . getItem ( 'SHOW_AD' ) === 'true' ) {
18
- setAdVisible ( true ) ;
15
+ // const [adVisible, setAdVisible] = useState(true);
16
+ // useEffect(() => {
17
+ // if (localStorage.getItem('SHOW_AD') === 'true') {
18
+ // setAdVisible(true);
19
+ // }
20
+ // }, []);
21
+
22
+ const postsWithAds = useMemo ( ( ) => {
23
+ if ( ! forHome ) return posts ;
24
+ const cloned : ( PartialPost | undefined ) [ ] = [ ...posts ] ;
25
+ cloned . splice ( 4 , 0 , undefined ) ;
26
+ if ( cloned . length > 30 ) {
27
+ cloned . splice ( 20 , 0 , undefined ) ;
19
28
}
20
- } , [ ] ) ;
29
+ return cloned ;
30
+ } , [ posts , forHome ] ) ;
21
31
22
32
return (
23
33
< Block >
24
- { adVisible && < AdFeed /> }
25
- { posts . map ( ( post ) => (
26
- < PostCard post = { post } key = { post . id } forHome = { forHome } />
27
- ) ) }
34
+ { postsWithAds . map ( ( post ) => {
35
+ if ( post )
36
+ return < PostCard post = { post } key = { post . id } forHome = { forHome } /> ;
37
+ return < AdFeed /> ;
38
+ } ) }
28
39
{ loading &&
29
40
Array . from ( { length : 8 } ) . map ( ( _ , i ) => (
30
41
< PostCardSkeleton key = { i } forHome = { forHome } />
0 commit comments