Files
react-native/Libraries/Components/AppleTV/TVEventHandler.js
T
Jean Regisser 781c68cb43 Add spec for TVNavigationEventEmitter (#24898)
Summary:
Part of #24875

## Changelog

[General] [Added] - Add TurboModule spec for TVNavigationEventEmitter
Pull Request resolved: https://github.com/facebook/react-native/pull/24898

Reviewed By: fkgozali

Differential Revision: D15391716

Pulled By: rickhanlonii

fbshipit-source-id: 015120c755894a5c8f75a99c2670a6ac5545b454
2019-05-22 03:27:54 -07:00

55 lines
1.4 KiB
JavaScript

/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow
*/
'use strict';
const Platform = require('../../Utilities/Platform');
const NativeEventEmitter = require('../../EventEmitter/NativeEventEmitter');
import NativeTVNavigationEventEmitter from './NativeTVNavigationEventEmitter';
function TVEventHandler() {
this.__nativeTVNavigationEventListener = null;
this.__nativeTVNavigationEventEmitter = null;
}
TVEventHandler.prototype.enable = function(
component: ?any,
callback: Function,
) {
if (Platform.OS === 'ios' && !NativeTVNavigationEventEmitter) {
return;
}
this.__nativeTVNavigationEventEmitter = new NativeEventEmitter(
NativeTVNavigationEventEmitter,
);
this.__nativeTVNavigationEventListener = this.__nativeTVNavigationEventEmitter.addListener(
'onHWKeyEvent',
data => {
if (callback) {
callback(component, data);
}
},
);
};
TVEventHandler.prototype.disable = function() {
if (this.__nativeTVNavigationEventListener) {
this.__nativeTVNavigationEventListener.remove();
delete this.__nativeTVNavigationEventListener;
}
if (this.__nativeTVNavigationEventEmitter) {
delete this.__nativeTVNavigationEventEmitter;
}
};
module.exports = TVEventHandler;