Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to stop timer while navigating on next Screen? #53

Open
osamaejaz89 opened this issue Nov 10, 2021 · 1 comment
Open

How to stop timer while navigating on next Screen? #53

osamaejaz89 opened this issue Nov 10, 2021 · 1 comment

Comments

@osamaejaz89
Copy link

Hi,

I am using UserInactivity component on the screen and timer does not stop while navigating on other screens, it works on other screens too. Can you guide me how to stop UserInactivity component on other screens?

@ggonzalez-lt
Copy link

ggonzalez-lt commented Jun 17, 2022

You have to catch when the screen main component are unfocused. Not unmounted, because it never be really unmounted in React Native actually. Then you should have to return something without the UserInactivity tag, some component different to the original component involve in the UserInactivity tag. Or the same component but without the UserInactivity tag. This is going to discard the timer in the new View of the React Navigation. Don't forget to catch the focus state of the View again and return the original Component involve in the UserInactivity tag to start the timer again.

import React,{useState, useCallback} from 'react';
import {useFocusEffect} from '@react-navigation/native';
import UserInactivity from 'react-native-user-inactivity';
...

const MyComponent = (props)=>{
useFocusEffect(
useCallback(() => {
setIsMounted(true);
console.log('SCREEN IS FOCUS');
return () => {
setIsMounted(false);
console.log('SCREEN IS UNFOCUSED');
};
}, [])
);
...
const [active, setActive] = useState(true);
const [timer, setTimer] = useState(10000);
const [isMounted, setIsMounted] = useState(true);

if(isMounted){
return(
<UserInactivity
isActive={active}
timeForInactivity={timer}
onAction={isActive => setActive(isActive)}
style={{ flex: 1 }}
>


);
}else{
return();
}
export default MyComponent;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants