//@ts-nocheck import React, { Component } from 'react' import { View, Text, StyleSheet, DeviceEventEmitter, TouchableOpacity, Linking, Animated, Easing, Image } from 'react-native' import { px2dp, onePx, colors, toast, version, isIos } from './../../../utils/base'; import HttpUtils from '../../../utils/http'; import { checkVersion, versionConfig, versionSwitch } from '../../../utils/api'; import redux from './../../../redux/store'; import { comErrorMsg } from '../../../utils/com'; import EVENT_KEY from '../../../utils/event-key'; export default class UpdateToast extends Component { constructor(props) { super(props); this.state = { data: [], opacity: new Animated.Value(0), }; this.active = false; this.delayTimer = null; } componentDidMount() { this.taskListner = DeviceEventEmitter.addListener('check-version', (a) => this.checkNewVersionExist()); let params1 = { version_platform: version.platform, version_no: version.version_counter, }; console.log(params1) HttpUtils.getRequest(versionSwitch, params1) .then(res => { console.log("当前开关信息", res) if (res.code === 10000) { if (res.data && res.data.info && res.data.info.switch && res.data.info.switch === 1) { console.log('kaiguan', 'kaiqi') redux.dispatch({ type: 'SET_SWITCH', data: { loaded: true, value: 1 } }); } else { console.log('kaiguan', 'guanbi'); DeviceEventEmitter.emit(EVENT_KEY.useHotUpdate); redux.dispatch({ type: 'SET_SWITCH', data: { loaded: true, value: 0 } }); } } }) .catch(err => { }) this.delayTimer = setTimeout(() => { this.checkNewVersionExist(); }, 1000) } checkNewVersionExist() { let params = { version_platform: version.platform, }; console.log('参数', params) HttpUtils.getRequest(versionConfig, params) //查询新版本 .then(res => { console.log('版本信息', res); if (res.code === 10000) { if (res.data && Number(res.data.info.version_no) > version.version_counter) { this.show(res.data.info); } else { // alert("已是最新版") } // if (res.data && res.data.info && res.data.info.switch && res.data.info.switch === 1) { // redux.dispatch({ type: 'SET_SWITCH', switch: 1 }); // } } else { } }) .catch(err => { toast(comErrorMsg) }) } componentWillUnmount() { this.delayHide && clearTimeout(this.delayHide); this.delayTimer && clearTimeout(this.delayTimer); this.taskListner && this.taskListner.remove(); } show = (data) => { console.log(data) this.setState({ data: data }) this.toast.setNativeProps({ style: { zIndex: 98 } }) Animated.timing( this.state.opacity, { toValue: 0.32, duration: 250, easing: Easing.in(), useNativeDriver: true } ).start(); } hide = () => { this.active = false; Animated.timing( this.state.opacity, { toValue: 0, duration: 200, easing: Easing.in(), useNativeDriver: true } ).start(); this.delayHide = setTimeout(() => { this.toast.setNativeProps({ style: { zIndex: -1 } }) }, 200); } jumpToMarket() { try { const { data } = this.state; if (isIos()) { let testAppleUrl = data.adopt_address; console.log(testAppleUrl); Linking.canOpenURL(testAppleUrl).then(supported => { if (supported) { Linking.openURL(testAppleUrl); } else { toast("打开AppleStore失败,请您自动前往更新"); } }) } else { //安卓应用处理逻辑 // let androidPackageUrl = data.adopt_address; // Linking.canOpenURL(androidPackageUrl).then(supported => { // if (supported) { // Linking.openURL(androidPackageUrl); // } else { // toast("打开应用市场失败,请您手动去应用市场搜索海囤生活App下载更新"); // } // }) let uri = "market://details?id=com.haitunapp" Linking.canOpenURL(uri) .then(res => { Linking.openURL(uri); }) .catch(err => { toastShort("打开应用市场失败,请您手动打开") }) } } catch (e) { toast("打开应用市场失败,请您手动去应用市场搜索海囤生活App下载更新"); } } render_text(text, index) { return ( {index + 1}、{text} ) }; render() { const { data } = this.state; console.log(data) return ( this.toast = c} style={styles.toastContainer}> 新版本发布了~ { data && data.content && data.content.split(',').map((text, index) => this.render_text(text, index)) } this.jumpToMarket()} style={styles.btn}> 立即更新 { data && data.type !== 1 ? this.hide()} style={styles.closeBtn}> : } ) } } const styles = StyleSheet.create({ toastContainer: { position: 'absolute', width: '100%', height: '100%', justifyContent: 'center', alignItems: 'center', overflow: 'hidden', zIndex: -1 }, toastOverlay: { position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, width: '100%', height: '100%', backgroundColor: '#000' }, toastContent: { width: px2dp(260), // height: px2dp(182), backgroundColor: '#fff', borderRadius: px2dp(18), justifyContent: 'space-between', alignItems: 'center', overflow: 'hidden', }, updatebg: { width: '100%', height: px2dp(260 * 606 / 1092) }, innerBox: { width: '100%', paddingVertical: px2dp(12), paddingHorizontal: px2dp(12), justifyContent: 'flex-start', alignItems: 'center' }, btn: { width: px2dp(220), height: px2dp(36), backgroundColor: colors.themeColor, borderRadius: px2dp(18), justifyContent: 'center', alignItems: 'center', marginTop: px2dp(18), marginBottom: px2dp(6) }, closeBtn: { width: px2dp(42), height: px2dp(42), justifyContent: 'center', alignItems: 'center', marginTop: px2dp(18) }, closeIcon: { width: px2dp(24), height: px2dp(24) }, // toastHeader: { // width: '100%', // justifyContent: 'center', // alignItems: 'center', // // backgroundColor: '#999', // paddingTop: px2dp(18) // }, // toastBody: { // width: '100%', // justifyContent: 'flex-start', // alignItems: 'center', // paddingHorizontal: px2dp(24), // paddingTop: px2dp(12), // paddingBottom: px2dp(24) // }, title: { width: '100%', fontSize: 16, color: '#333', fontWeight: '600', lineHeight: 25, textAlign: 'center', letterSpacing: 0.8, marginBottom: px2dp(12) }, dec: { width: '100%', fontSize: 15, color: '#999', marginBottom: px2dp(10) }, // toastFooter: { // width: '100%', // height: px2dp(52), // borderTopColor: '#eee', // borderTopWidth: onePx, // justifyContent: 'center', // alignItems: 'center' // } })