/* eslint-disable react/no-unstable-nested-components */ /* eslint-disable react-native/no-inline-styles */ import React, {useState} from 'react'; import { StyleSheet, Platform, Text, View, TouchableOpacity, Image, Switch, } from 'react-native'; import {Icon, PaperProvider, Snackbar, Banner} from 'react-native-paper'; import TestConsole from './TestConsole'; import _updateConfig from '../update.json'; import {PushyProvider, Pushy, usePushy} from 'react-native-update'; const {appKey} = _updateConfig[Platform.OS]; function App() { const { client, checkUpdate, downloadUpdate, switchVersionLater, switchVersion, updateInfo, packageVersion, currentHash, progress: {received, total} = {}, } = usePushy(); const [useDefaultAlert, setUseDefaultAlert] = useState(true); const [showTestConsole, setShowTestConsole] = useState(false); const [showUpdateBanner, setShowUpdateBanner] = useState(false); const [showUpdateSnackbar, setShowUpdateSnackbar] = useState(false); const snackbarVisible = !useDefaultAlert && showUpdateSnackbar && updateInfo?.update; return ( 欢迎使用Pushy热更新服务 {useDefaultAlert ? '当前使用' : '当前不使用'}默认的alert更新提示 { setUseDefaultAlert(v); client?.setOptions({ updateStrategy: v ? null : 'alwaysAlert', }); setShowUpdateSnackbar(!v); }} /> 这是版本一 {'\n'} 当前原生包版本号: {packageVersion} {'\n'} 当前热更新版本Hash: {currentHash || '(空)'} {'\n'} 下载进度:{received} / {total} { checkUpdate(); setShowUpdateSnackbar(true); }}> 点击这里检查更新 { setShowTestConsole(true); }}> react-native-update版本:{client?.version} {snackbarVisible && ( { setShowUpdateSnackbar(false); }} action={{ label: '更新', onPress: async () => { setShowUpdateSnackbar(false); await downloadUpdate(); setShowUpdateBanner(true); }, }}> 有新版本({updateInfo.name})可用,是否更新? )} { switchVersionLater(); setShowUpdateBanner(false); }, }, ]} icon={({size}) => ( )}> 更新已完成,是否立即重启? ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF', }, welcome: { fontSize: 20, textAlign: 'center', margin: 10, }, instructions: { textAlign: 'center', color: '#333333', marginBottom: 5, }, image: {}, }); const pushyClient = new Pushy({ appKey, }); export default function Root() { return ( ); }