Skip to content

Commit 036bc3f

Browse files
Merged PR 40170: Verleng geldigheidsduur toegangscode bij activiteit
Related work items: #137910
2 parents 58b29b0 + f985073 commit 036bc3f

File tree

5 files changed

+81
-29
lines changed

5 files changed

+81
-29
lines changed

src/components/features/header/HeaderBase.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {EdgeInsets, useSafeAreaInsets} from 'react-native-safe-area-context'
44
import {HideFromAccessibility} from '@/components/features/accessibility/HideFromAccessibility'
55
import {HeaderProps} from '@/components/features/header/types'
66
import {Box} from '@/components/ui/containers/Box'
7+
import {ExtendAccessCodeValidityOnTap} from '@/modules/access-code/components/ExtendAccessCodeValidityOnTap'
78
import {useScreen} from '@/store/slices/screen'
89

910
type BackgroundColorProp = {
@@ -27,7 +28,9 @@ export const HeaderBase = ({backgroundColor, children}: Props) => {
2728
<HideFromAccessibility
2829
hide={isContentHiddenFromAccessibility || isHiddenFromAccessibility}
2930
style={styles.header}>
30-
<Box>{children}</Box>
31+
<ExtendAccessCodeValidityOnTap>
32+
<Box>{children}</Box>
33+
</ExtendAccessCodeValidityOnTap>
3134
</HideFromAccessibility>
3235
)
3336
}

src/components/features/screen/ScreenBase.tsx

+30-27
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {ScreenInnerWrapper} from '@/components/features/screen/ScreenInnerWrappe
88
import {ScreenWrapper} from '@/components/features/screen/ScreenWrapper'
99
import {AlertTopOfScreen} from '@/components/ui/feedback/alert/AlertTopOfScreen'
1010
import {Gutter} from '@/components/ui/layout/Gutter'
11+
import {ExtendAccessCodeValidityOnTap} from '@/modules/access-code/components/ExtendAccessCodeValidityOnTap'
1112
import {DisableScrollProvider} from '@/providers/disableScroll.provider'
1213
import {useScreen} from '@/store/slices/screen'
1314

@@ -59,35 +60,37 @@ export const ScreenBase = ({
5960

6061
return (
6162
<DisableScrollProvider>
62-
<HideFromAccessibility
63-
hide={isHiddenFromAccessibility}
64-
style={styles.screen}
65-
testID={testID}>
66-
{!isOutsideNavigation && !!bottomSheet && <ScreenHeader />}
67-
{stickyHeader}
68-
{!!hasStickyAlert && <AlertTopOfScreen />}
63+
<ExtendAccessCodeValidityOnTap>
6964
<HideFromAccessibility
70-
hide={isContentHiddenFromAccessibility}
71-
style={[styles.scrollViewContent, styles.scrollView]}>
72-
<ScreenWrapper
73-
scrollViewContentStyle={styles.scrollViewContent}
74-
scrollViewStyle={styles.scrollView}
75-
trackScroll={trackScroll}
76-
{...wrapperProps}>
77-
<ScreenInnerWrapper style={styles.content}>
78-
{children}
79-
</ScreenInnerWrapper>
80-
</ScreenWrapper>
65+
hide={isHiddenFromAccessibility}
66+
style={styles.screen}
67+
testID={testID}>
68+
{!isOutsideNavigation && !!bottomSheet && <ScreenHeader />}
69+
{stickyHeader}
70+
{!!hasStickyAlert && <AlertTopOfScreen />}
71+
<HideFromAccessibility
72+
hide={isContentHiddenFromAccessibility}
73+
style={[styles.scrollViewContent, styles.scrollView]}>
74+
<ScreenWrapper
75+
scrollViewContentStyle={styles.scrollViewContent}
76+
scrollViewStyle={styles.scrollView}
77+
trackScroll={trackScroll}
78+
{...wrapperProps}>
79+
<ScreenInnerWrapper style={styles.content}>
80+
{children}
81+
</ScreenInnerWrapper>
82+
</ScreenWrapper>
83+
</HideFromAccessibility>
84+
{(!!stickyFooter || !!bottomSheet) && (
85+
<>
86+
<Gutter height="sm" />
87+
{stickyFooter}
88+
{bottomSheet}
89+
</>
90+
)}
91+
{!!spaceBottom && <View style={{height: spaceBottom}} />}
8192
</HideFromAccessibility>
82-
{(!!stickyFooter || !!bottomSheet) && (
83-
<>
84-
<Gutter height="sm" />
85-
{stickyFooter}
86-
{bottomSheet}
87-
</>
88-
)}
89-
{!!spaceBottom && <View style={{height: spaceBottom}} />}
90-
</HideFromAccessibility>
93+
</ExtendAccessCodeValidityOnTap>
9194
</DisableScrollProvider>
9295
)
9396
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import {ReactNode} from 'react'
2+
import {
3+
ComposedGesture,
4+
GestureDetector as GestureDetectorBase,
5+
GestureType,
6+
} from 'react-native-gesture-handler'
7+
8+
type Props = {
9+
children: ReactNode
10+
gesture: ComposedGesture | GestureType
11+
}
12+
13+
export const GestureDetector = (props: Props) => (
14+
<GestureDetectorBase {...props} />
15+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import {ReactNode, useMemo} from 'react'
2+
import {Gesture, GestureDetector} from 'react-native-gesture-handler'
3+
import {runOnJS} from 'react-native-reanimated'
4+
import {useEnterAccessCode} from '@/modules/access-code/hooks/useEnterAccessCode'
5+
6+
type Props = {
7+
children: ReactNode
8+
}
9+
10+
export const ExtendAccessCodeValidityOnTap = ({children}: Props) => {
11+
const {onExtendAccessCodeValidity} = useEnterAccessCode()
12+
13+
const gesture = useMemo(
14+
() =>
15+
Gesture.Tap().onBegin(() => {
16+
runOnJS(onExtendAccessCodeValidity)()
17+
}),
18+
[onExtendAccessCodeValidity],
19+
)
20+
21+
return <GestureDetector gesture={gesture}>{children}</GestureDetector>
22+
}

src/modules/access-code/hooks/useEnterAccessCode.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,19 @@ export const useEnterAccessCode = () => {
6767
return false
6868
} else {
6969
return (
70-
Math.abs(dayjs(now).diff(dayjs(codeValidTimestamp))) <= 15 * msToMinutes
70+
Math.abs(dayjs(now).diff(dayjs(codeValidTimestamp))) <= 5 * msToMinutes
7171
)
7272
}
7373
}, [codeValidTimestamp])
7474

75+
const onExtendAccessCodeValidity = useCallback(() => {
76+
if (!isCodeValid) {
77+
return
78+
}
79+
80+
dispatch(setIsCodeValid(true))
81+
}, [dispatch, isCodeValid])
82+
7583
const setIsForgotCode = useCallback(
7684
(forgot: boolean) =>
7785
dispatch(accessCodeSlice.actions.setIsForgotCode(forgot)),
@@ -93,6 +101,7 @@ export const useEnterAccessCode = () => {
93101
isEnteringCode,
94102
isForgotCode,
95103
onAccessCodeEntered,
104+
onExtendAccessCodeValidity,
96105
setIsEnteringCode,
97106
setIsForgotCode,
98107
}

0 commit comments

Comments
 (0)