Skip to content

Commit d6f611c

Browse files
grab data from session storage if available
1 parent 885a08d commit d6f611c

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

src/components/feed/Feed.tsx

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use client'
22

3-
import { useEffect, useRef, useState } from 'react'
3+
import { useCallback, useEffect, useRef, useState } from 'react'
44
import { FetchLoading } from 'fetch-loading'
55
import { Badge } from '@/components/ui/badge'
66
import {
@@ -12,45 +12,45 @@ import {
1212
CardTitle,
1313
} from '@/components/ui/card'
1414
import fetchFeedItems from '@/api/fetchFeedItems'
15+
import { FeedItemsType } from '@/types/types'
16+
import { getItemFromSessionStorage } from '@/utils/getItemFromSessionStorage'
1517

1618
const Feed = () => {
1719
const PAGE_SIZE = 10
1820
const nextPage = useRef<number>(1)
19-
const [feedItems, setFeedItems] = useState<
20-
Array<{
21-
postId: number
22-
id: number
23-
name: string
24-
email: string
25-
body: string
26-
}>
27-
>([])
21+
const [feedItems, setFeedItems] = useState<Array<FeedItemsType>>([])
2822
const [isLoading, setIsLoading] = useState(false)
2923

30-
const loadMore = async () => {
24+
const loadMoreItems = useCallback(async () => {
3125
if (isLoading) return
3226
setIsLoading(true)
3327
await fetchFeedItems(nextPage, PAGE_SIZE, setFeedItems)
3428
setIsLoading(false)
35-
}
29+
}, [isLoading])
3630

3731
useEffect(() => {
38-
loadMore()
39-
}, [])
32+
const parsedStorageData = getItemFromSessionStorage()
33+
setFeedItems(parsedStorageData?.feedItems || [])
34+
nextPage.current = parsedStorageData?.nextPage || 1
35+
36+
if (!parsedStorageData?.feedItems?.length) {
37+
loadMoreItems()
38+
}
39+
}, [loadMoreItems])
4040

4141
useEffect(() => {
4242
const handleScroll = () => {
4343
if (
4444
window.innerHeight + window.scrollY >=
4545
document.body.offsetHeight - 96
4646
) {
47-
loadMore()
47+
loadMoreItems()
4848
}
4949
}
5050

5151
window.addEventListener('scroll', handleScroll)
5252
return () => window.removeEventListener('scroll', handleScroll)
53-
}, [isLoading])
53+
}, [isLoading, loadMoreItems])
5454

5555
return (
5656
<main

0 commit comments

Comments
 (0)