Hide "tap zone overlay" on user action
This commit is contained in:
@@ -29,6 +29,7 @@ import { ScrollOffset } from '@/modules/core/Core.types.ts';
|
|||||||
import { getOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts';
|
import { getOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts';
|
||||||
import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts';
|
import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts';
|
||||||
import { useReaderAutoScrollContext } from '@/modules/reader/contexts/ReaderAutoScrollContext.tsx';
|
import { useReaderAutoScrollContext } from '@/modules/reader/contexts/ReaderAutoScrollContext.tsx';
|
||||||
|
import { useReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx';
|
||||||
|
|
||||||
const useHotkeys = (...args: Parameters<typeof useHotKeysHook>): ReturnType<typeof useHotKeysHook> => {
|
const useHotkeys = (...args: Parameters<typeof useHotKeysHook>): ReturnType<typeof useHotKeysHook> => {
|
||||||
const [keys, callback, options, dependencies] = args;
|
const [keys, callback, options, dependencies] = args;
|
||||||
@@ -80,6 +81,7 @@ export const ReaderHotkeys = ({
|
|||||||
autoScroll,
|
autoScroll,
|
||||||
} = ReaderService.useSettings();
|
} = ReaderService.useSettings();
|
||||||
const automaticScrolling = useReaderAutoScrollContext();
|
const automaticScrolling = useReaderAutoScrollContext();
|
||||||
|
const { setShowPreview } = useReaderTapZoneContext();
|
||||||
|
|
||||||
const openChapter = ReaderControls.useOpenChapter();
|
const openChapter = ReaderControls.useOpenChapter();
|
||||||
const openPage = ReaderControls.useOpenPage();
|
const openPage = ReaderControls.useOpenPage();
|
||||||
@@ -102,6 +104,7 @@ export const ReaderHotkeys = ({
|
|||||||
scrollElementRef.current,
|
scrollElementRef.current,
|
||||||
openChapter,
|
openChapter,
|
||||||
setIsOverlayVisible,
|
setIsOverlayVisible,
|
||||||
|
setShowPreview,
|
||||||
ReaderScrollAmount.SMALL,
|
ReaderScrollAmount.SMALL,
|
||||||
),
|
),
|
||||||
{ preventDefault: true },
|
{ preventDefault: true },
|
||||||
@@ -120,6 +123,7 @@ export const ReaderHotkeys = ({
|
|||||||
scrollElementRef.current,
|
scrollElementRef.current,
|
||||||
openChapter,
|
openChapter,
|
||||||
setIsOverlayVisible,
|
setIsOverlayVisible,
|
||||||
|
setShowPreview,
|
||||||
ReaderScrollAmount.SMALL,
|
ReaderScrollAmount.SMALL,
|
||||||
),
|
),
|
||||||
{ preventDefault: true },
|
{ preventDefault: true },
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ import {
|
|||||||
} from '@/modules/reader/utils/ReaderPager.utils.tsx';
|
} from '@/modules/reader/utils/ReaderPager.utils.tsx';
|
||||||
import { useReaderOverlayContext } from '@/modules/reader/contexts/ReaderOverlayContext.tsx';
|
import { useReaderOverlayContext } from '@/modules/reader/contexts/ReaderOverlayContext.tsx';
|
||||||
import { useReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx';
|
import { useReaderTapZoneContext } from '@/modules/reader/contexts/ReaderTapZoneContext.tsx';
|
||||||
import { TapZoneRegionType } from '@/modules/reader/types/TapZoneLayout.types.ts';
|
import { TapZoneRegionType, TReaderTapZoneContext } from '@/modules/reader/types/TapZoneLayout.types.ts';
|
||||||
import { ReaderTapZoneService } from '@/modules/reader/services/ReaderTapZoneService.ts';
|
import { ReaderTapZoneService } from '@/modules/reader/services/ReaderTapZoneService.ts';
|
||||||
import { isContinuousReadingMode } from '@/modules/reader/utils/ReaderSettings.utils.tsx';
|
import { isContinuousReadingMode } from '@/modules/reader/utils/ReaderSettings.utils.tsx';
|
||||||
import { getReaderChapterFromCache } from '@/modules/reader/utils/Reader.utils.ts';
|
import { getReaderChapterFromCache } from '@/modules/reader/utils/Reader.utils.ts';
|
||||||
@@ -97,6 +97,7 @@ export class ReaderControls {
|
|||||||
element: HTMLElement,
|
element: HTMLElement,
|
||||||
openChapter: ReturnType<(typeof ReaderControls)['useOpenChapter']>,
|
openChapter: ReturnType<(typeof ReaderControls)['useOpenChapter']>,
|
||||||
setIsOverlayVisible: TReaderOverlayContext['setIsVisible'],
|
setIsOverlayVisible: TReaderOverlayContext['setIsVisible'],
|
||||||
|
setShowPreview: TReaderTapZoneContext['setShowPreview'],
|
||||||
scrollAmountPercentage: number = ReaderScrollAmount.LARGE,
|
scrollAmountPercentage: number = ReaderScrollAmount.LARGE,
|
||||||
): void {
|
): void {
|
||||||
if (!element) {
|
if (!element) {
|
||||||
@@ -125,6 +126,7 @@ export class ReaderControls {
|
|||||||
currentPos + elementSize * scrollAmount * scrollDirection;
|
currentPos + elementSize * scrollAmount * scrollDirection;
|
||||||
|
|
||||||
setIsOverlayVisible(false);
|
setIsOverlayVisible(false);
|
||||||
|
setShowPreview(false);
|
||||||
|
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case ScrollDirection.X:
|
case ScrollDirection.X:
|
||||||
@@ -259,6 +261,7 @@ export class ReaderControls {
|
|||||||
userReaderStatePagesContext();
|
userReaderStatePagesContext();
|
||||||
const { previousChapter, nextChapter } = useReaderStateChaptersContext();
|
const { previousChapter, nextChapter } = useReaderStateChaptersContext();
|
||||||
const { setIsVisible: setIsOverlayVisible } = useReaderOverlayContext();
|
const { setIsVisible: setIsOverlayVisible } = useReaderOverlayContext();
|
||||||
|
const { setShowPreview } = useReaderTapZoneContext();
|
||||||
const { readingDirection, readingMode } = ReaderService.useSettings();
|
const { readingDirection, readingMode } = ReaderService.useSettings();
|
||||||
const openChapter = ReaderControls.useOpenChapter();
|
const openChapter = ReaderControls.useOpenChapter();
|
||||||
|
|
||||||
@@ -290,6 +293,7 @@ export class ReaderControls {
|
|||||||
|
|
||||||
if (hideOverlay) {
|
if (hideOverlay) {
|
||||||
setIsOverlayVisible(false);
|
setIsOverlayVisible(false);
|
||||||
|
setShowPreview(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
const hideTransitionPage = () => setTransitionPageMode(ReaderTransitionPageMode.NONE);
|
const hideTransitionPage = () => setTransitionPageMode(ReaderTransitionPageMode.NONE);
|
||||||
@@ -501,6 +505,7 @@ export class ReaderControls {
|
|||||||
scrollElement,
|
scrollElement,
|
||||||
openChapter,
|
openChapter,
|
||||||
setIsOverlayVisible,
|
setIsOverlayVisible,
|
||||||
|
setShowPreview,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
openPage('previous', 'ltr');
|
openPage('previous', 'ltr');
|
||||||
@@ -517,6 +522,7 @@ export class ReaderControls {
|
|||||||
scrollElement,
|
scrollElement,
|
||||||
openChapter,
|
openChapter,
|
||||||
setIsOverlayVisible,
|
setIsOverlayVisible,
|
||||||
|
setShowPreview,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
openPage('next', 'ltr');
|
openPage('next', 'ltr');
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import {
|
|||||||
import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts';
|
import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts';
|
||||||
import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts';
|
import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts';
|
||||||
import { coerceIn } from '@/lib/HelperFunctions.ts';
|
import { coerceIn } from '@/lib/HelperFunctions.ts';
|
||||||
|
import { TReaderTapZoneContext } from '@/modules/reader/types/TapZoneLayout.types.ts';
|
||||||
|
|
||||||
export const getInitialReaderPageIndex = (
|
export const getInitialReaderPageIndex = (
|
||||||
resumeMode: ReaderResumeMode,
|
resumeMode: ReaderResumeMode,
|
||||||
@@ -312,6 +313,8 @@ export const useReaderHorizontalModeInvertXYScrolling = (
|
|||||||
export const useReaderHideOverlayOnUserScroll = (
|
export const useReaderHideOverlayOnUserScroll = (
|
||||||
isOverlayVisible: boolean,
|
isOverlayVisible: boolean,
|
||||||
setIsOverlayVisible: TReaderOverlayContext['setIsVisible'],
|
setIsOverlayVisible: TReaderOverlayContext['setIsVisible'],
|
||||||
|
showPreview: TReaderTapZoneContext['showPreview'],
|
||||||
|
setShowPreview: TReaderTapZoneContext['setShowPreview'],
|
||||||
scrollElementRef: MutableRefObject<HTMLDivElement | null>,
|
scrollElementRef: MutableRefObject<HTMLDivElement | null>,
|
||||||
) => {
|
) => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -319,6 +322,10 @@ export const useReaderHideOverlayOnUserScroll = (
|
|||||||
if (isOverlayVisible) {
|
if (isOverlayVisible) {
|
||||||
setIsOverlayVisible(false);
|
setIsOverlayVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (showPreview) {
|
||||||
|
setShowPreview(false);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
scrollElementRef.current?.addEventListener('wheel', handleScroll);
|
scrollElementRef.current?.addEventListener('wheel', handleScroll);
|
||||||
@@ -327,7 +334,7 @@ export const useReaderHideOverlayOnUserScroll = (
|
|||||||
scrollElementRef.current?.removeEventListener('wheel', handleScroll);
|
scrollElementRef.current?.removeEventListener('wheel', handleScroll);
|
||||||
scrollElementRef.current?.removeEventListener('touchmove', handleScroll);
|
scrollElementRef.current?.removeEventListener('touchmove', handleScroll);
|
||||||
};
|
};
|
||||||
}, [isOverlayVisible]);
|
}, [isOverlayVisible, showPreview]);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useReaderAutoScroll = (
|
export const useReaderAutoScroll = (
|
||||||
|
|||||||
Reference in New Issue
Block a user