UNPKG

hcmobile-sdk

Version:

mobile-sdk

91 lines (79 loc) 2.18 kB
'use strict'; import { NativeModules, processColor, Platform, NativeEventEmitter,Alert } from 'react-native'; type AlertType = $Enum<{ 'default': string, 'plain-text': string }>; type AlertButtonStyle = $Enum<{ 'default': string, 'cancel': string, 'destructive': string, }>; type ButtonsArray = Array<{ text?: string, onPress?: ?Function, style?: AlertButtonStyle, }>; class AlertHC { static alert( title: ?string, message?: ?string, callbackOrButtons?: ?(() => void) | ButtonsArray, type?: AlertType, placeholder?: string, doneButtonKey?: number, cancelable?: boolean, ): void { if (Platform.OS !== 'ios') { var callbacks = []; var buttons = []; if (typeof callbackOrButtons === 'function') { callbacks = [callbackOrButtons]; } else if (callbackOrButtons instanceof Array) { callbackOrButtons.forEach((btn, index) => { callbacks[index] = btn.onPress; if (btn.text || index < (callbackOrButtons || []).length - 1) { var btnDef = {}; btnDef['text'] = btn.text || ''; btnDef['index'] = String(index); btnDef['style'] = btn.style || 'default'; buttons.push(btnDef); } }); } const { RNKitAlertView } = NativeModules; const nativeEventEmitter = new NativeEventEmitter(RNKitAlertView); this.listener && this.listener.remove(); this.listener = nativeEventEmitter.addListener('AlertViewEvent', event => { if (event.text.length && Platform.OS !== 'ios') { this.listener && this.listener.remove(); } var cb = callbacks[doneButtonKey]; cb && cb(event.text); // console.log('=========>' + event.text); }); RNKitAlertView.alertWithArgs({ title: title || undefined, message: message || undefined, buttons, type: type || undefined, placeholder, cancelable: cancelable || false, }, (id, value) => { var cb = callbacks[id]; cb && cb(value); }); } else { Alert.alert( title,message,callbackOrButtons,type,cancelable ) } } }; export default AlertHC;