Skip to content

Commit 199e67f

Browse files
outsource useeffect
1 parent c8d394e commit 199e67f

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

src/components/quote/Quote.tsx

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { ContextQuote } from '@/context/ContextQuote'
44
import { QuoteType } from '@/types/types'
55
import { Skeleton } from '@/components/ui/skeleton'
66
import { fetchQuote } from '@/api/fetchQuote'
7-
import { getItemFromSessionStorage } from '@/utils/getItemFromSessionStorage'
7+
import { useLoadQuote } from '@/hooks/useLoadQuote'
88

99
const Quote = () => {
1010
const contextContentLoaded = useContext(ContextContentLoaded)
@@ -34,16 +34,7 @@ const Quote = () => {
3434
setIsLoading(false)
3535
}, [isLoading, setContentLoaded])
3636

37-
useEffect(() => {
38-
const parsedStorageData = getItemFromSessionStorage()
39-
setQuote(parsedStorageData?.quote || null)
40-
41-
if (!parsedStorageData?.quote) {
42-
loadQuote()
43-
} else {
44-
setContentLoaded((prev) => ({ ...prev, quote: true }))
45-
}
46-
}, [loadQuote, setContentLoaded])
37+
useLoadQuote(loadQuote, setContentLoaded, setQuote)
4738

4839
return (
4940
<section className="w-full max-w-7xl" ref={quoteRef}>

src/hooks/useLoadQuote.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
'use client'
2+
3+
import { Dispatch, SetStateAction, useEffect } from 'react'
4+
import { QuoteType } from '@/types/types'
5+
import { getItemFromSessionStorage } from '@/utils/getItemFromSessionStorage'
6+
7+
export const useLoadQuote = (
8+
loadQuote: () => Promise<void>,
9+
setContentLoaded: Dispatch<
10+
SetStateAction<{
11+
posts: boolean
12+
quote: boolean
13+
users: boolean
14+
}>
15+
>,
16+
setQuote: Dispatch<SetStateAction<QuoteType | null>>
17+
) => {
18+
useEffect(() => {
19+
const parsedStorageData = getItemFromSessionStorage()
20+
setQuote(parsedStorageData?.quote || null)
21+
22+
if (!parsedStorageData?.quote) {
23+
loadQuote()
24+
} else {
25+
setContentLoaded((prev) => ({ ...prev, quote: true }))
26+
}
27+
}, [loadQuote, setContentLoaded, setQuote])
28+
}

0 commit comments

Comments
 (0)