From 11ad6abfef6e0c9412a2bcb58e57c12baa82b078 Mon Sep 17 00:00:00 2001 From: soupette Date: Fri, 19 Jun 2020 17:33:47 +0200 Subject: [PATCH] Fix subscriptions on unmount Signed-off-by: soupette --- .../lib/src/components/CheckPagePermissions/index.js | 8 +++++++- .../lib/src/components/CheckPermissions/index.js | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/strapi-helper-plugin/lib/src/components/CheckPagePermissions/index.js b/packages/strapi-helper-plugin/lib/src/components/CheckPagePermissions/index.js index e759eb262c..d611f1df13 100644 --- a/packages/strapi-helper-plugin/lib/src/components/CheckPagePermissions/index.js +++ b/packages/strapi-helper-plugin/lib/src/components/CheckPagePermissions/index.js @@ -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]); diff --git a/packages/strapi-helper-plugin/lib/src/components/CheckPermissions/index.js b/packages/strapi-helper-plugin/lib/src/components/CheckPermissions/index.js index 8573437812..e9817cb040 100644 --- a/packages/strapi-helper-plugin/lib/src/components/CheckPermissions/index.js +++ b/packages/strapi-helper-plugin/lib/src/components/CheckPermissions/index.js @@ -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]);