Refactor how keyboard tracking is resumed & paused (#6822)

* Refactor how keyboard tracking is resumed & paused

* Rector as a hook
This commit is contained in:
Elias Nahum
2022-12-05 12:02:15 +02:00
committed by GitHub
parent dc294eddd3
commit da5b877297
7 changed files with 46 additions and 40 deletions

View File

@@ -0,0 +1,34 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {RefObject, useEffect, useRef} from 'react';
import {KeyboardTrackingViewRef} from 'react-native-keyboard-tracking-view';
import {Navigation} from 'react-native-navigation';
import NavigationStore from '@store/navigation_store';
export const useKeyboardTrackingPaused = (keyboardTrackingRef: RefObject<KeyboardTrackingViewRef>, trackerId: string, screens: string[]) => {
const isPostDraftPaused = useRef(false);
useEffect(() => {
const commandListener = Navigation.events().registerCommandListener(() => {
if (!isPostDraftPaused.current) {
isPostDraftPaused.current = true;
keyboardTrackingRef.current?.pauseTracking(trackerId);
}
});
const commandCompletedListener = Navigation.events().registerCommandCompletedListener(() => {
const id = NavigationStore.getNavigationTopComponentId();
if (screens.includes(id) && isPostDraftPaused.current) {
isPostDraftPaused.current = false;
keyboardTrackingRef.current?.resumeTracking(trackerId);
}
});
return () => {
commandListener.remove();
commandCompletedListener.remove();
};
}, [trackerId]);
};