mirror of
https://github.com/status-im/react-native.git
synced 2025-01-17 21:11:45 +00:00
b7352b4667
Summary: This moves into open source the PermissionsModule and the activity and listener interfaces necessary to make permissions work. It also moves the PermissionsExample into the UIExplorer. In order to make this work, the device has to be Android M and above, and the target sdk of the app has to be 23+, so I changed the uiexplorer manifest to target that API. This has the unfortunate consequence that people testing on devices with API 23+ will have to enable the `draw over other apps` setting that react needs for RedBoxing. The app will automatically send the user to that screen, so enabling the setting and resuming the app should be trivial. For testing, try requesting permission for a permission that is currently revoked. If a permission is granted, it can be revoked via adb (`adb shell pm revoke com.your.app android.permission.PERMISSION_NAME`), and then requested. Reviewed By: bestander Differential Revision: D3431324 fbshipit-source-id: 8cbaea676d2b5727cb5191cdb77a02e213bf9ba3
219 lines
4.8 KiB
JavaScript
219 lines
4.8 KiB
JavaScript
/**
|
|
* Copyright (c) 2013-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*
|
|
* The examples provided by Facebook are for non-commercial testing and
|
|
* evaluation purposes only.
|
|
*
|
|
* Facebook reserves all rights not expressly granted.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL
|
|
* FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
|
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*
|
|
* @flow
|
|
*/
|
|
'use strict';
|
|
|
|
const React = require('React');
|
|
|
|
export type UIExplorerExample = {
|
|
key: string;
|
|
module: React.Component;
|
|
};
|
|
|
|
var ComponentExamples: Array<UIExplorerExample> = [
|
|
{
|
|
key: 'ActivityIndicatorExample',
|
|
module: require('./ActivityIndicatorExample'),
|
|
},
|
|
{
|
|
key: 'SliderExample',
|
|
module: require('./SliderExample'),
|
|
},
|
|
{
|
|
key: 'ImageExample',
|
|
module: require('./ImageExample'),
|
|
},
|
|
{
|
|
key: 'ListViewExample',
|
|
module: require('./ListViewExample'),
|
|
},
|
|
{
|
|
key: 'ModalExample',
|
|
module: require('./ModalExample'),
|
|
},
|
|
{
|
|
key: 'PickerExample',
|
|
module: require('./PickerExample'),
|
|
},
|
|
{
|
|
key: 'ProgressBarAndroidExample',
|
|
module: require('./ProgressBarAndroidExample'),
|
|
},
|
|
{
|
|
key: 'RefreshControlExample',
|
|
module: require('./RefreshControlExample'),
|
|
},
|
|
{
|
|
key: 'ScrollViewSimpleExample',
|
|
module: require('./ScrollViewSimpleExample'),
|
|
},
|
|
{
|
|
key: 'StatusBarExample',
|
|
module: require('./StatusBarExample'),
|
|
},
|
|
{
|
|
key: 'SwitchExample',
|
|
module: require('./SwitchExample'),
|
|
},
|
|
{
|
|
key: 'TextExample',
|
|
module: require('./TextExample'),
|
|
},
|
|
{
|
|
key: 'TextInputExample',
|
|
module: require('./TextInputExample'),
|
|
},
|
|
{
|
|
key: 'ToolbarAndroidExample',
|
|
module: require('./ToolbarAndroidExample'),
|
|
},
|
|
{
|
|
key: 'TouchableExample',
|
|
module: require('./TouchableExample'),
|
|
},
|
|
{
|
|
key: 'ViewExample',
|
|
module: require('./ViewExample'),
|
|
},
|
|
{
|
|
key: 'ViewPagerAndroidExample',
|
|
module: require('./ViewPagerAndroidExample'),
|
|
},
|
|
{
|
|
key: 'WebViewExample',
|
|
module: require('./WebViewExample'),
|
|
},
|
|
];
|
|
|
|
const APIExamples = [
|
|
{
|
|
key: 'AccessibilityAndroidExample',
|
|
module: require('./AccessibilityAndroidExample'),
|
|
},
|
|
{
|
|
key: 'AlertExample',
|
|
module: require('./AlertExample').AlertExample,
|
|
},
|
|
{
|
|
key: 'AppStateExample',
|
|
module: require('./AppStateExample'),
|
|
},
|
|
{
|
|
key: 'BorderExample',
|
|
module: require('./BorderExample'),
|
|
},
|
|
{
|
|
key: 'CameraRollExample',
|
|
module: require('./CameraRollExample'),
|
|
},
|
|
{
|
|
key: 'ClipboardExample',
|
|
module: require('./ClipboardExample'),
|
|
},
|
|
{
|
|
key: 'DatePickerAndroidExample',
|
|
module: require('./DatePickerAndroidExample'),
|
|
},
|
|
{
|
|
key: 'GeolocationExample',
|
|
module: require('./GeolocationExample'),
|
|
},
|
|
{
|
|
key: 'ImageEditingExample',
|
|
module: require('./ImageEditingExample'),
|
|
},
|
|
{
|
|
key: 'LayoutEventsExample',
|
|
module: require('./LayoutEventsExample'),
|
|
},
|
|
{
|
|
key: 'LinkingExample',
|
|
module: require('./LinkingExample'),
|
|
},
|
|
{
|
|
key: 'LayoutAnimationExample',
|
|
module: require('./LayoutAnimationExample'),
|
|
},
|
|
{
|
|
key: 'LayoutExample',
|
|
module: require('./LayoutExample'),
|
|
},
|
|
{
|
|
key: 'NavigationExperimentalExample',
|
|
module: require('./NavigationExperimental/NavigationExperimentalExample'),
|
|
},
|
|
{
|
|
key: 'NetInfoExample',
|
|
module: require('./NetInfoExample'),
|
|
},
|
|
{
|
|
key: 'PanResponderExample',
|
|
module: require('./PanResponderExample'),
|
|
},
|
|
{
|
|
key: 'PermissionsExampleAndroid',
|
|
module: require('./PermissionsExampleAndroid'),
|
|
},
|
|
{
|
|
key: 'PointerEventsExample',
|
|
module: require('./PointerEventsExample'),
|
|
},
|
|
{
|
|
key: 'TimePickerAndroidExample',
|
|
module: require('./TimePickerAndroidExample'),
|
|
},
|
|
{
|
|
key: 'TimerExample',
|
|
module: require('./TimerExample'),
|
|
},
|
|
{
|
|
key: 'ToastAndroidExample',
|
|
module: require('./ToastAndroidExample'),
|
|
},
|
|
{
|
|
key: 'VibrationExample',
|
|
module: require('./VibrationExample'),
|
|
},
|
|
{
|
|
key: 'WebSocketExample',
|
|
module: require('./WebSocketExample'),
|
|
},
|
|
{
|
|
key: 'XHRExample',
|
|
module: require('./XHRExample'),
|
|
},
|
|
];
|
|
|
|
const Modules = {};
|
|
|
|
APIExamples.concat(ComponentExamples).forEach(Example => {
|
|
Modules[Example.key] = Example.module;
|
|
});
|
|
|
|
const UIExplorerList = {
|
|
APIExamples,
|
|
ComponentExamples,
|
|
Modules,
|
|
};
|
|
|
|
module.exports = UIExplorerList;
|