mirror of
				https://gitcode.com/gh_mirrors/re/react-native-pushy.git
				synced 2025-10-31 21:33:12 +08:00 
			
		
		
		
	Add TestConsole
This commit is contained in:
		
							
								
								
									
										73
									
								
								Example/testHotUpdate/src/TestConsole.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								Example/testHotUpdate/src/TestConsole.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | |||||||
|  | import React from 'react'; | ||||||
|  | import { | ||||||
|  |   ActivityIndicator, | ||||||
|  |   Alert, | ||||||
|  |   Modal, | ||||||
|  |   TextInput, | ||||||
|  |   Button, | ||||||
|  |   NativeModules, | ||||||
|  |   StyleSheet, | ||||||
|  |   SafeAreaView, | ||||||
|  |   Text, | ||||||
|  |   View, | ||||||
|  | } from 'react-native'; | ||||||
|  |  | ||||||
|  | const Pushy = NativeModules.Pushy; | ||||||
|  | export default function TestConsole({visible}) { | ||||||
|  |   const [text, setText] = React.useState(''); | ||||||
|  |   const [running, setRunning] = React.useState(false); | ||||||
|  |   return ( | ||||||
|  |     <Modal visible={visible}> | ||||||
|  |       <SafeAreaView style={{flex: 1, padding: 10}}> | ||||||
|  |         <Text>调试Pushy方法(方法名,参数,值换行)</Text> | ||||||
|  |         <TextInput | ||||||
|  |           style={{ | ||||||
|  |             borderWidth: StyleSheet.hairlineWidth * 4, | ||||||
|  |             borderColor: 'black', | ||||||
|  |             height: '30%', | ||||||
|  |             marginTop: 20, | ||||||
|  |             marginBottom: 20, | ||||||
|  |             padding: 10, | ||||||
|  |             fontSize: 20, | ||||||
|  |           }} | ||||||
|  |           textAlignVertical="top" | ||||||
|  |           multiline={true} | ||||||
|  |           value={text} | ||||||
|  |           onChangeText={setText} | ||||||
|  |         /> | ||||||
|  |         {running && <ActivityIndicator />} | ||||||
|  |         <Button | ||||||
|  |           title="执行" | ||||||
|  |           onPress={async () => { | ||||||
|  |             setRunning(true); | ||||||
|  |             try { | ||||||
|  |               const inputs = text.split('\n'); | ||||||
|  |               const methodName = inputs[0]; | ||||||
|  |               let params; | ||||||
|  |               if (inputs.length === 1) { | ||||||
|  |                 await Pushy[methodName](); | ||||||
|  |               } else { | ||||||
|  |                 if (inputs.length === 2) { | ||||||
|  |                   params = inputs[1]; | ||||||
|  |                 } else { | ||||||
|  |                   params = {}; | ||||||
|  |                   for (let i = 1; i < inputs.length; i += 2) { | ||||||
|  |                     params[inputs[i]] = inputs[i + 1]; | ||||||
|  |                   } | ||||||
|  |                   console.log({inputs, params}); | ||||||
|  |                 } | ||||||
|  |                 await Pushy[methodName](params); | ||||||
|  |               } | ||||||
|  |               Alert.alert('done'); | ||||||
|  |             } catch (e) { | ||||||
|  |               Alert.alert(e.message); | ||||||
|  |             } | ||||||
|  |             setRunning(false); | ||||||
|  |           }}></Button> | ||||||
|  |         <View style={{marginTop: 15}}> | ||||||
|  |           <Button title="重置" onPress={() => setText('')} /> | ||||||
|  |         </View> | ||||||
|  |       </SafeAreaView> | ||||||
|  |     </Modal> | ||||||
|  |   ); | ||||||
|  | } | ||||||
| @@ -8,7 +8,6 @@ import { | |||||||
|   TouchableOpacity, |   TouchableOpacity, | ||||||
|   Linking, |   Linking, | ||||||
|   Image, |   Image, | ||||||
|   NativeModules, |  | ||||||
| } from 'react-native'; | } from 'react-native'; | ||||||
|  |  | ||||||
| import { | import { | ||||||
| @@ -25,12 +24,15 @@ import { | |||||||
|   cInfo, |   cInfo, | ||||||
| } from 'react-native-update'; | } from 'react-native-update'; | ||||||
|  |  | ||||||
|  | import TestConsole from './TestConsole'; | ||||||
|  |  | ||||||
| import _updateConfig from '../update.json'; | import _updateConfig from '../update.json'; | ||||||
| const {appKey} = _updateConfig[Platform.OS]; | const {appKey} = _updateConfig[Platform.OS]; | ||||||
| export default class App extends Component { | export default class App extends Component { | ||||||
|   state = { |   state = { | ||||||
|     received: 0, |     received: 0, | ||||||
|     total: 0, |     total: 0, | ||||||
|  |     showTestConsole: false, | ||||||
|   }; |   }; | ||||||
|   componentDidMount() { |   componentDidMount() { | ||||||
|     if (isRolledBack) { |     if (isRolledBack) { | ||||||
| @@ -56,7 +58,7 @@ export default class App extends Component { | |||||||
|       ); |       ); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   doUpdate = async (info) => { |   doUpdate = async info => { | ||||||
|     try { |     try { | ||||||
|       const hash = await downloadUpdate(info, { |       const hash = await downloadUpdate(info, { | ||||||
|         onDownloadProgress: ({received, total}) => { |         onDownloadProgress: ({received, total}) => { | ||||||
| @@ -141,7 +143,7 @@ export default class App extends Component { | |||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   render() { |   render() { | ||||||
|     const {received, total} = this.state; |     const {received, total, showTestConsole} = this.state; | ||||||
|     return ( |     return ( | ||||||
|       <View style={styles.container}> |       <View style={styles.container}> | ||||||
|         <Text style={styles.welcome}>欢迎使用热更新服务</Text> |         <Text style={styles.welcome}>欢迎使用热更新服务</Text> | ||||||
| @@ -167,12 +169,13 @@ export default class App extends Component { | |||||||
|         <TouchableOpacity |         <TouchableOpacity | ||||||
|           style={{marginTop: 15}} |           style={{marginTop: 15}} | ||||||
|           onLongPress={() => { |           onLongPress={() => { | ||||||
|             // TODO 调试pushy方法 |             this.setState({showTestConsole: true}); | ||||||
|           }}> |           }}> | ||||||
|           <Text style={styles.instructions}> |           <Text style={styles.instructions}> | ||||||
|             react-native-update版本:{cInfo.pushy} |             react-native-update版本:{cInfo.pushy} | ||||||
|           </Text> |           </Text> | ||||||
|         </TouchableOpacity> |         </TouchableOpacity> | ||||||
|  |         <TestConsole visible={showTestConsole} /> | ||||||
|         {/* <WebView style={{flex:1}} source={{uri: require('../www/index.html')}}/> */} |         {/* <WebView style={{flex:1}} source={{uri: require('../www/index.html')}}/> */} | ||||||
|       </View> |       </View> | ||||||
|     ); |     ); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 sunnylqm
					sunnylqm