Fix subscriptions on unmount

Signed-off-by: soupette <cyril.lpz@gmail.com>
This commit is contained in:
soupette 2020-06-19 17:33:47 +02:00 committed by Alexandre Bodin
parent fb9d4d439f
commit 11ad6abfef
2 changed files with 14 additions and 2 deletions

View File

@ -6,6 +6,8 @@ import hasPermissions from '../../utils/hasPermissions';
import LoadingIndicatorPage from '../LoadingIndicatorPage';
const CheckPagePermissions = ({ permissions, children }) => {
const abortController = new AbortController();
const { signal } = abortController;
const userPermissions = useUser();
const [state, setState] = useState({ isLoading: true, canAccess: false });
const isMounted = useRef(true);
@ -15,7 +17,7 @@ const CheckPagePermissions = ({ permissions, children }) => {
try {
setState({ isLoading: true, canAccess: false });
const canAccess = await hasPermissions(userPermissions, permissions);
const canAccess = await hasPermissions(userPermissions, permissions, signal);
if (isMounted.current) {
setState({ isLoading: false, canAccess });
@ -33,6 +35,10 @@ const CheckPagePermissions = ({ permissions, children }) => {
checkPermission();
return () => {
abortController.abort();
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [permissions]);

View File

@ -11,13 +11,15 @@ const CheckPermissions = ({ permissions, children }) => {
const userPermissions = useUser();
const [state, setState] = useState({ isLoading: true, canAccess: false });
const isMounted = useRef(true);
const abortController = new AbortController();
const { signal } = abortController;
useEffect(() => {
const checkPermission = async () => {
try {
setState({ isLoading: true, canAccess: false });
const canAccess = await hasPermissions(userPermissions, permissions);
const canAccess = await hasPermissions(userPermissions, permissions, signal);
if (isMounted.current) {
setState({ isLoading: false, canAccess });
@ -33,6 +35,10 @@ const CheckPermissions = ({ permissions, children }) => {
};
checkPermission();
return () => {
abortController.abort();
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [permissions]);