tuya-panel-kit
Version:
a functional component library for developing tuya device panels!
358 lines (304 loc) • 12.1 kB
JavaScript
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;