UNPKG

react-native-template-allmax

Version:

React native template with navigation, redux, redux-saga, eslit, flow, reactotron

46 lines (39 loc) 951 B
// @flow import { Keyboard } from 'react-native'; import { isIos, } from './constants'; import type { Listeners, KeyboardEventListener, } from '~/types'; export class ListenersManager { listeners: Listeners = []; addKeyboardListeners = ({ onHideEventName = isIos ? 'keyboardWillHide' : 'keyboardDidHide', onShow, onHide, otherListeners, }: { onHideEventName?: string, onShow: KeyboardEventListener, onHide: KeyboardEventListener, otherListeners?: Listeners, }) => { const { listeners } = this; listeners.push( Keyboard.addListener(isIos ? 'keyboardWillShow' : 'keyboardDidShow', onShow), Keyboard.addListener(onHideEventName, onHide), ); if (otherListeners != null) { listeners.push(...otherListeners); } }; removeListeners = () => { const { listeners } = this; while (listeners) { listeners[0].remove(); listeners.shift(); } }; }