Skip to content

Commit 5090ae6

Browse files
committed
move the intersection callback out of the app
1 parent ce6993d commit 5090ae6

1 file changed

Lines changed: 16 additions & 12 deletions

File tree

src/App.js

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@ const OnboardingModal = React.lazy(() =>
1515
import('src/features/onboarding').then((module) => ({ default: module.OnboardingModal }))
1616
)
1717

18+
const intersectionCallback = (entries) => {
19+
entries.forEach((entry) => {
20+
if (!entry.isIntersecting) {
21+
document.documentElement.classList.remove('dndState')
22+
} else {
23+
document.documentElement.classList.add('dndState')
24+
}
25+
})
26+
}
27+
1828
function App() {
1929
const [showSideBar, setShowSideBar] = useState(false)
2030
const [showSettings, setShowSettings] = useState(false)
@@ -26,6 +36,7 @@ function App() {
2636
maxVisibleCards,
2737
isDNDModeActive,
2838
DNDDuration,
39+
setDNDDuration,
2940
} = useUserPreferences()
3041

3142
useLayoutEffect(() => {
@@ -50,21 +61,14 @@ function App() {
5061

5162
useEffect(() => {
5263
trackPageView('home', isDNDModeActive())
53-
}, [DNDDuration, isDNDModeActive])
54-
55-
const callback = (entries) => {
56-
entries.forEach((entry) => {
57-
if (!entry.isIntersecting) {
58-
document.documentElement.classList.remove('dndState')
59-
} else {
60-
document.documentElement.classList.add('dndState')
61-
}
62-
})
63-
}
64+
if (!isDNDModeActive() && DNDDuration !== 'never') {
65+
setDNDDuration('never')
66+
}
67+
}, [DNDDuration, isDNDModeActive, setDNDDuration])
6468

6569
useLayoutEffect(() => {
6670
let dndContent = document.querySelector('.DNDContent')
67-
let observer = new IntersectionObserver(callback, {
71+
let observer = new IntersectionObserver(intersectionCallback, {
6872
threshold: 0.1,
6973
})
7074

0 commit comments

Comments
 (0)