UNPKG

tuya-panel-kit

Version:

a functional component library for developing tuya device panels!

358 lines (304 loc) 12.1 kB
Object.defineProperty(exports, "__esModule", { value: true }); var _jsxFileName = 'src/components/layout/offline-view/ble-offline-view/index.js'; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactNative = require('react-native'); var _TYNativeApi = require('../../../../TYNativeApi'); var _modal = require('../../../modal'); var _modal2 = _interopRequireDefault(_modal); var _bleToast = require('./ble-toast'); var _bleToast2 = _interopRequireDefault(_bleToast); var _bleToastModal = require('./ble-toast-modal'); var _bleToastModal2 = _interopRequireDefault(_bleToastModal); var _bleTipModal = require('./ble-tip-modal'); var _bleTipModal2 = _interopRequireDefault(_bleTipModal); var _bleOfflineModal = require('./ble-offline-modal'); var _bleOfflineModal2 = _interopRequireDefault(_bleOfflineModal); var _strings = require('../../../i18n/strings'); var _strings2 = _interopRequireDefault(_strings); var _utils = require('../../../../utils'); var _styled = require('./styled'); var _styled2 = require('../../../dialog/styled'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var isIos = _utils.RatioUtils.isIos; var TYDevice = _TYNativeApi.TYSdk.device; var TYNative = _TYNativeApi.TYSdk.native; var compareVersion = _utils.CoreUtils.compareVersion, get = _utils.CoreUtils.get; var Res = { arrow: require('../../../res/arrow.png'), question: require('../../../res/question.png') }; var BleOfflineView = function (_Component) { _inherits(BleOfflineView, _Component); function BleOfflineView() { var _ref; var _temp, _this, _ret; _classCallCheck(this, BleOfflineView); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = BleOfflineView.__proto__ || Object.getPrototypeOf(BleOfflineView)).call.apply(_ref, [this].concat(args))), _this), _this.showOverlayModal = function () { var _this$props = _this.props, bluetoothValue = _this$props.bluetoothValue, deviceOnline = _this$props.deviceOnline, isBleOfflineOverlay = _this$props.isBleOfflineOverlay; if (!isBleOfflineOverlay) { return; } if (!bluetoothValue) { _modal2.default.close(); if (isIos) { _modal2.default.render(_react2.default.createElement(_bleTipModal2.default, { disabled: true, maskColor: 'rgba(0, 0, 0, 0.6)', __source: { fileName: _jsxFileName, lineNumber: 107 } }), { mask: false }); } else { _modal2.default.render(_react2.default.createElement(_bleToastModal2.default, { style: { top: 16 }, disabled: true, text: _strings2.default.getLang('bluetoothOfflineTip'), image: Res.arrow, onPress: function onPress() { return TYDevice.gotoBlePermissions(); }, __source: { fileName: _jsxFileName, lineNumber: 112 } }), { mask: false }); _this.timer = setTimeout(function () { return TYDevice.gotoBlePermissions(); }, 200); } } else if (!deviceOnline) { _modal2.default.close(); _this.showBleOfflineModal(); } }, _this.showBleOfflineModal = function () { var _this$props2 = _this.props, isBleOfflineOverlay = _this$props2.isBleOfflineOverlay, onLinkPress = _this$props2.onLinkPress, isJumpToWifi = _this$props2.isJumpToWifi; _modal2.default.render(_react2.default.createElement(_bleOfflineModal2.default, { disabled: true, title: _strings2.default.getLang('deviceOffline'), cancelText: '', confirmText: '', content: _react2.default.createElement( _reactNative.View, { style: { paddingBottom: 24, paddingHorizontal: 30 }, __source: { fileName: _jsxFileName, lineNumber: 139 } }, _react2.default.createElement( _styled.StyledTitle, { style: { fontSize: 13, textAlign: 'left', lineHeight: 20 }, __source: { fileName: _jsxFileName, lineNumber: 140 } }, _strings2.default.getLang('deviceOfflineHelpNew'), _react2.default.createElement( _styled.StyledTitle, { style: [{ fontSize: 13, lineHeight: 20 }, isJumpToWifi && { color: '#FF4800', textDecorationLine: 'underline' }], onPress: onLinkPress, __source: { fileName: _jsxFileName, lineNumber: 148 } }, _strings2.default.getLang('offline_link') ) ) ), onClose: _modal2.default.close, footer: _react2.default.createElement( _styled2.StyledFooter, { __source: { fileName: _jsxFileName, lineNumber: 168 } }, _react2.default.createElement( _styled2.StyledButton, { bordered: true, onPress: function onPress() { _modal2.default.close(); isBleOfflineOverlay && TYNative.back(); }, __source: { fileName: _jsxFileName, lineNumber: 169 } }, _react2.default.createElement( _styled.StyledCancelText, { style: { fontWeight: '400' }, __source: { fileName: _jsxFileName, lineNumber: 176 } }, _strings2.default.getLang(isBleOfflineOverlay ? 'backToHome' : 'alreadyKnow') ) ), _react2.default.createElement( _styled2.StyledButton, { onPress: _this.openH5HelpWebView, disabled: false, __source: { fileName: _jsxFileName, lineNumber: 181 } }, _react2.default.createElement( _styled2.StyledConfirmText, { style: { fontWeight: '400' }, __source: { fileName: _jsxFileName, lineNumber: 182 } }, _strings2.default.getLang('checkHelp') ) ) ), __source: { fileName: _jsxFileName, lineNumber: 133 } }), { mask: false }); }, _this.openH5HelpWebView = function () { var isAllowJumpTo = _this.props.isAllowJumpTo; _modal2.default.close(); if (isAllowJumpTo) { TYNative.getContentRouter().then(function (result) { var devId = _TYNativeApi.TYSdk.devInfo.devId; var href = result.href; TYNative.jumpTo(href + '?type=net_set&deviceId=' + devId); }).catch(function () { _TYNativeApi.TYSdk.mobile.jumpSubPage({ uiId: '0000012lky' }, {}); }); } else { _TYNativeApi.TYSdk.mobile.jumpSubPage({ uiId: '0000012lky' }, {}); } }, _this._handleToastPress = function () { var _this$props3 = _this.props, bluetoothValue = _this$props3.bluetoothValue, deviceOnline = _this$props3.deviceOnline; if (!bluetoothValue) { if (isIos) { _modal2.default.render(_react2.default.createElement(_bleTipModal2.default, { onClose: _modal2.default.close, __source: { fileName: _jsxFileName, lineNumber: 216 } }), { mask: false }); } else { TYDevice.gotoBlePermissions(); } } else if (!deviceOnline) { _this.showBleOfflineModal(true); } }, _temp), _possibleConstructorReturn(_this, _ret); } _createClass(BleOfflineView, [{ key: 'componentDidMount', value: function componentDidMount() { this.showOverlayModal(); } }, { key: 'componentDidUpdate', value: function componentDidUpdate(prevProps) { if (prevProps.deviceOnline !== this.props.deviceOnline || prevProps.bluetoothValue !== this.props.bluetoothValue) { this.showOverlayModal(); } } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { _modal2.default.close(); this.timer && clearTimeout(this.timer); } }, { key: 'getTipText', value: function getTipText() { var _props = this.props, deviceOnline = _props.deviceOnline, bluetoothValue = _props.bluetoothValue; if (bluetoothValue && deviceOnline) { return; } var tipText = void 0; if (!bluetoothValue) { tipText = _strings2.default.getLang('bluetoothOfflineTip'); } else if (!deviceOnline) { tipText = _strings2.default.getLang('deviceOffline'); } return tipText; } }, { key: 'render', value: function render() { var _props2 = this.props, bluetoothValue = _props2.bluetoothValue, isBleOfflineOverlay = _props2.isBleOfflineOverlay; if (isBleOfflineOverlay) { return null; } var tipText = this.getTipText(); if (!tipText) { return null; } return _react2.default.createElement(_bleToast2.default, { text: tipText, image: bluetoothValue ? Res.question : Res.arrow, onPress: this._handleToastPress, __source: { fileName: _jsxFileName, lineNumber: 235 } }); } }]); return BleOfflineView; }(_react.Component); BleOfflineView.propTypes = { deviceOnline: _propTypes2.default.bool, bluetoothValue: _propTypes2.default.bool, isBleOfflineOverlay: _propTypes2.default.bool, isJumpToWifi: _propTypes2.default.bool, onLinkPress: _propTypes2.default.func, isAllowJumpTo: _propTypes2.default.bool }; BleOfflineView.defaultProps = { deviceOnline: true, bluetoothValue: true, isBleOfflineOverlay: true, isJumpToWifi: false, onLinkPress: function onLinkPress() {} }; exports.default = BleOfflineView;