mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Add spec for AlertManager (#24906)
Summary: Part of #24875 ## Changelog [General] [Added] - Add TurboModule spec for AlertManager Pull Request resolved: https://github.com/facebook/react-native/pull/24906 Reviewed By: lunaleaps Differential Revision: D15471065 Pulled By: fkgozali fbshipit-source-id: bb22e6454b1f748987f3a8cd957bfd4e027493a5
This commit is contained in:
committed by
Facebook Github Bot
parent
956077675e
commit
122cc8ba8a
@@ -10,37 +10,12 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
import NativeModules from '../BatchedBridge/NativeModules';
|
||||
import Platform from '../Utilities/Platform';
|
||||
import DialogManagerAndroid, {
|
||||
import NativeDialogManagerAndroid, {
|
||||
type DialogOptions,
|
||||
} from '../NativeModules/specs/NativeDialogManagerAndroid';
|
||||
|
||||
const RCTAlertManager = NativeModules.AlertManager;
|
||||
|
||||
export type Buttons = Array<{
|
||||
text?: string,
|
||||
onPress?: ?Function,
|
||||
style?: AlertButtonStyle,
|
||||
}>;
|
||||
|
||||
type Options = {
|
||||
cancelable?: ?boolean,
|
||||
onDismiss?: ?Function,
|
||||
};
|
||||
|
||||
type AlertType = $Keys<{
|
||||
default: string,
|
||||
'plain-text': string,
|
||||
'secure-text': string,
|
||||
'login-password': string,
|
||||
}>;
|
||||
|
||||
export type AlertButtonStyle = $Keys<{
|
||||
default: string,
|
||||
cancel: string,
|
||||
destructive: string,
|
||||
}>;
|
||||
import RCTAlertManager from './RCTAlertManager';
|
||||
import {type Buttons, type Options, type AlertType} from './NativeAlertManager';
|
||||
|
||||
/**
|
||||
* Launches an alert dialog with the specified title and message.
|
||||
@@ -57,10 +32,10 @@ class Alert {
|
||||
if (Platform.OS === 'ios') {
|
||||
Alert.prompt(title, message, buttons, 'default');
|
||||
} else if (Platform.OS === 'android') {
|
||||
if (!DialogManagerAndroid) {
|
||||
if (!NativeDialogManagerAndroid) {
|
||||
return;
|
||||
}
|
||||
const constants = DialogManagerAndroid.getConstants();
|
||||
const constants = NativeDialogManagerAndroid.getConstants();
|
||||
|
||||
const config: DialogOptions = {
|
||||
title: title || '',
|
||||
@@ -105,7 +80,7 @@ class Alert {
|
||||
}
|
||||
};
|
||||
const onError = errorMessage => console.warn(errorMessage);
|
||||
DialogManagerAndroid.showAlert(config, onError, onAction);
|
||||
NativeDialogManagerAndroid.showAlert(config, onError, onAction);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,7 +106,7 @@ class Alert {
|
||||
{
|
||||
title: title || '',
|
||||
type: 'plain-text',
|
||||
defaultValue: message,
|
||||
defaultValue: message || '',
|
||||
},
|
||||
(id, value) => {
|
||||
callback(value);
|
||||
@@ -175,6 +150,7 @@ class Alert {
|
||||
},
|
||||
(id, value) => {
|
||||
const cb = callbacks[id];
|
||||
// $FlowFixMe
|
||||
cb && cb(value);
|
||||
},
|
||||
);
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
* @flow
|
||||
* @format
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import type {TurboModule} from 'RCTExport';
|
||||
import * as TurboModuleRegistry from 'TurboModuleRegistry';
|
||||
|
||||
export type Buttons = Array<{
|
||||
text?: string,
|
||||
onPress?: ?Function,
|
||||
style?: AlertButtonStyle,
|
||||
}>;
|
||||
|
||||
export type Options = {
|
||||
cancelable?: ?boolean,
|
||||
onDismiss?: ?() => void,
|
||||
};
|
||||
|
||||
/* 'default' | plain-text' | 'secure-text' | 'login-password' */
|
||||
export type AlertType = string;
|
||||
|
||||
/* 'default' | 'cancel' | 'destructive' */
|
||||
export type AlertButtonStyle = string;
|
||||
|
||||
export type Args = {|
|
||||
title?: string,
|
||||
message?: string,
|
||||
buttons?: Buttons,
|
||||
type?: string,
|
||||
defaultValue?: string,
|
||||
cancelButtonKey?: string,
|
||||
destructiveButtonKey?: string,
|
||||
keyboardType?: string,
|
||||
|};
|
||||
|
||||
export interface Spec extends TurboModule {
|
||||
+alertWithArgs: (
|
||||
args: Args,
|
||||
callback: (id: number, value: string) => void,
|
||||
) => void;
|
||||
}
|
||||
|
||||
export default TurboModuleRegistry.get<Spec>('AlertManager');
|
||||
@@ -10,6 +10,17 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
const RCTAlertManager = require('../BatchedBridge/NativeModules').AlertManager;
|
||||
import NativeAlertManager from './NativeAlertManager';
|
||||
import type {Args} from './NativeAlertManager';
|
||||
|
||||
module.exports = RCTAlertManager;
|
||||
module.exports = {
|
||||
alertWithArgs(
|
||||
args: Args,
|
||||
callback: (id: number, value: string) => void,
|
||||
): void {
|
||||
if (NativeAlertManager == null) {
|
||||
return;
|
||||
}
|
||||
NativeAlertManager.alertWithArgs(args, callback);
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user