refactor(js): reduce function complexity

This commit is contained in:
Cotes Chung 2023-04-09 20:44:55 +08:00
parent c283e7782f
commit 1967de1f1d
No known key found for this signature in database
GPG key ID: 0D9E54843167A808

View file

@ -6,7 +6,6 @@ import ScrollHelper from './utils/scroll-helper';
const $searchInput = $('#search-input'); const $searchInput = $('#search-input');
const delta = ScrollHelper.getTopbarHeight(); const delta = ScrollHelper.getTopbarHeight();
let didScroll;
let lastScrollTop = 0; let lastScrollTop = 0;
function hasScrolled() { function hasScrolled() {
@ -60,34 +59,41 @@ function handleLandscape() {
export function switchTopbar() { export function switchTopbar() {
const orientation = screen.orientation; const orientation = screen.orientation;
if (orientation) { let didScroll = false;
orientation.onchange = () => {
const type = orientation.type;
if (type === 'landscape-primary' || type === 'landscape-secondary') {
handleLandscape();
}
};
} else {
// for the browsers that not support `window.screen.orientation` API
$(window).on('orientationchange', () => {
if ($(window).width() < $(window).height()) {
// before rotating, it is still in portrait mode.
handleLandscape();
}
});
}
$(window).on('scroll', () => { const handleOrientationChange = () => {
if (didScroll) { const type = orientation.type;
return; if (type === 'landscape-primary' || type === 'landscape-secondary') {
handleLandscape();
} }
didScroll = true; };
});
setInterval(() => { const handleWindowChange = () => {
if ($(window).width() < $(window).height()) {
// before rotating, it is still in portrait mode.
handleLandscape();
}
};
const handleScroll = () => {
didScroll = true;
};
const checkScroll = () => {
if (didScroll) { if (didScroll) {
hasScrolled(); hasScrolled();
didScroll = false; didScroll = false;
} }
}, 250); };
if (orientation) {
orientation.addEventListener('change', handleOrientationChange);
} else {
// for the browsers that not support `window.screen.orientation` API
$(window).on('orientationchange', handleWindowChange);
}
$(window).on('scroll', handleScroll);
setInterval(checkScroll, 250);
} }