From 77df1e4fc7556364af16f3e4377627a2028a1105 Mon Sep 17 00:00:00 2001 From: Taras Perun Date: Tue, 20 Feb 2024 17:36:53 +0100 Subject: [PATCH 1/4] remove delay in freeze --- src/libs/Navigation/FreezeWrapper.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/libs/Navigation/FreezeWrapper.tsx b/src/libs/Navigation/FreezeWrapper.tsx index 570553d38017..c229d36438d1 100644 --- a/src/libs/Navigation/FreezeWrapper.tsx +++ b/src/libs/Navigation/FreezeWrapper.tsx @@ -1,7 +1,6 @@ import {useIsFocused, useNavigation, useRoute} from '@react-navigation/native'; import React, {useEffect, useRef, useState} from 'react'; import {Freeze} from 'react-freeze'; -import {InteractionManager} from 'react-native'; import type ChildrenProps from '@src/types/utils/ChildrenProps'; type FreezeWrapperProps = ChildrenProps & { @@ -28,8 +27,8 @@ function FreezeWrapper({keepVisible = false, children}: FreezeWrapperProps) { // if the screen is more than 1 screen away from the current screen, freeze it, // we don't want to freeze the screen if it's the previous screen because the freeze placeholder // would be visible at the beginning of the back animation then - if (navigation.getState().index - (screenIndexRef.current ?? 0) > 1) { - InteractionManager.runAfterInteractions(() => setIsScreenBlurred(true)); + if (navigation.getState().index - (screenIndexRef.current ?? 0) >= 1) { + setIsScreenBlurred(true); } else { setIsScreenBlurred(false); } From fc2b6428670abc4fec70a4b8ddad3e395e0681e9 Mon Sep 17 00:00:00 2001 From: Taras Perun Date: Tue, 20 Feb 2024 17:37:28 +0100 Subject: [PATCH 2/4] remove keepVisible --- src/pages/home/sidebar/SidebarScreen/index.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/pages/home/sidebar/SidebarScreen/index.js b/src/pages/home/sidebar/SidebarScreen/index.js index 7086e8a8561a..dfb5db7c15d3 100755 --- a/src/pages/home/sidebar/SidebarScreen/index.js +++ b/src/pages/home/sidebar/SidebarScreen/index.js @@ -1,14 +1,11 @@ import React from 'react'; -import useWindowDimensions from '@hooks/useWindowDimensions'; import FreezeWrapper from '@libs/Navigation/FreezeWrapper'; import BaseSidebarScreen from './BaseSidebarScreen'; import sidebarPropTypes from './sidebarPropTypes'; function SidebarScreen(props) { - const {isSmallScreenWidth} = useWindowDimensions(); - return ( - + Date: Mon, 11 Mar 2024 15:30:18 +0100 Subject: [PATCH 3/4] clean comment --- src/libs/Navigation/FreezeWrapper.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/libs/Navigation/FreezeWrapper.tsx b/src/libs/Navigation/FreezeWrapper.tsx index 160c3d1d2041..2656d40d6436 100644 --- a/src/libs/Navigation/FreezeWrapper.tsx +++ b/src/libs/Navigation/FreezeWrapper.tsx @@ -24,10 +24,6 @@ function FreezeWrapper({keepVisible = false, children}: FreezeWrapperProps) { useEffect(() => { const unsubscribe = navigation.addListener('state', () => { - // if the screen is more than 1 screen away from the current screen, freeze it, - // we don't want to freeze the screen if it's the previous screen because the freeze placeholder - // would be visible at the beginning of the back animation then - if ((navigation.getState()?.index ?? 0) - (screenIndexRef.current ?? 0) >= 1) { setIsScreenBlurred(true); } else { From 462e2004cc46945e96105f6e3e97bd24814dcfd1 Mon Sep 17 00:00:00 2001 From: Taras Perun Date: Tue, 12 Mar 2024 09:28:37 +0100 Subject: [PATCH 4/4] bring back freezing on 1 screen away --- src/libs/Navigation/FreezeWrapper.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libs/Navigation/FreezeWrapper.tsx b/src/libs/Navigation/FreezeWrapper.tsx index 2656d40d6436..bb6ab107373b 100644 --- a/src/libs/Navigation/FreezeWrapper.tsx +++ b/src/libs/Navigation/FreezeWrapper.tsx @@ -24,7 +24,10 @@ function FreezeWrapper({keepVisible = false, children}: FreezeWrapperProps) { useEffect(() => { const unsubscribe = navigation.addListener('state', () => { - if ((navigation.getState()?.index ?? 0) - (screenIndexRef.current ?? 0) >= 1) { + // if the screen is more than 1 screen away from the current screen, freeze it, + // we don't want to freeze the screen if it's the previous screen because the freeze placeholder + // would be visible at the beginning of the back animation then + if ((navigation.getState()?.index ?? 0) - (screenIndexRef.current ?? 0) > 1) { setIsScreenBlurred(true); } else { setIsScreenBlurred(false);