@iobroker/adapter-react-v5 3.4.1 → 3.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Components/JsonConfigComponent/ChipInput.js +5 -0
- package/Components/JsonConfigComponent/ChipInput.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCheckLicense.d.ts +3 -0
- package/Components/JsonConfigComponent/ConfigCheckLicense.js +592 -0
- package/Components/JsonConfigComponent/ConfigCheckLicense.js.map +1 -0
- package/Components/JsonConfigComponent/ConfigColor.js +5 -4
- package/Components/JsonConfigComponent/ConfigColor.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCustom.js +14 -3
- package/Components/JsonConfigComponent/ConfigCustom.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigGeneric.d.ts +1 -1
- package/Components/JsonConfigComponent/ConfigGeneric.js +20 -10
- package/Components/JsonConfigComponent/ConfigGeneric.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigIP.js +1 -1
- package/Components/JsonConfigComponent/ConfigIP.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigNumber.js +5 -1
- package/Components/JsonConfigComponent/ConfigNumber.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigPanel.js +11 -7
- package/Components/JsonConfigComponent/ConfigPanel.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSelect.d.ts +1 -1
- package/Components/JsonConfigComponent/ConfigSelect.js +7 -2
- package/Components/JsonConfigComponent/ConfigSelect.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSendto.js +29 -6
- package/Components/JsonConfigComponent/ConfigSendto.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigStaticText.js +5 -1
- package/Components/JsonConfigComponent/ConfigStaticText.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTable.js +44 -38
- package/Components/JsonConfigComponent/ConfigTable.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigText.d.ts +1 -1
- package/Components/JsonConfigComponent/ConfigText.js +74 -22
- package/Components/JsonConfigComponent/ConfigText.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigUUID.d.ts +13 -0
- package/Components/JsonConfigComponent/ConfigUUID.js +97 -0
- package/Components/JsonConfigComponent/ConfigUUID.js.map +1 -0
- package/Components/JsonConfigComponent/index.js +29 -7
- package/Components/JsonConfigComponent/index.js.map +1 -1
- package/README.md +4 -1
- package/i18n/de.json +10 -1
- package/i18n/en.json +10 -1
- package/i18n/es.json +10 -1
- package/i18n/fr.json +10 -1
- package/i18n/it.json +10 -1
- package/i18n/nl.json +10 -1
- package/i18n/pl.json +10 -1
- package/i18n/pt.json +10 -1
- package/i18n/ru.json +10 -1
- package/i18n/uk.json +10 -1
- package/i18n/zh-cn.json +10 -1
- package/package.json +1 -1
|
@@ -0,0 +1,592 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
16
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
17
|
+
var _react = _interopRequireDefault(require("react"));
|
|
18
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
19
|
+
var _styles = require("@mui/styles");
|
|
20
|
+
var _material = require("@mui/material");
|
|
21
|
+
var _Send = _interopRequireDefault(require("@mui/icons-material/Send"));
|
|
22
|
+
var _i18n = _interopRequireDefault(require("../../i18n"));
|
|
23
|
+
var _Error = _interopRequireDefault(require("../../Dialogs/Error"));
|
|
24
|
+
var _ConfigGeneric2 = _interopRequireDefault(require("./ConfigGeneric"));
|
|
25
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
26
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
27
|
+
var styles = function styles(theme) {
|
|
28
|
+
return {
|
|
29
|
+
fullWidth: {
|
|
30
|
+
width: '100%'
|
|
31
|
+
},
|
|
32
|
+
icon: {
|
|
33
|
+
width: 24,
|
|
34
|
+
height: 24,
|
|
35
|
+
marginRight: 4
|
|
36
|
+
},
|
|
37
|
+
licLabel: {
|
|
38
|
+
fontWeight: 'bold',
|
|
39
|
+
minWidth: 100,
|
|
40
|
+
textTransform: 'capitalize',
|
|
41
|
+
display: 'inline-block'
|
|
42
|
+
},
|
|
43
|
+
licValue: {
|
|
44
|
+
fontWeight: 'normal'
|
|
45
|
+
},
|
|
46
|
+
errorTitle: {
|
|
47
|
+
color: theme.palette.mode === 'dark' ? '#e39191' : '#b62020'
|
|
48
|
+
},
|
|
49
|
+
okTitle: {
|
|
50
|
+
color: theme.palette.mode === 'dark' ? '#6fd56f' : '#007c00'
|
|
51
|
+
},
|
|
52
|
+
errorText: {
|
|
53
|
+
color: theme.palette.mode === 'dark' ? '#e39191' : '#b62020',
|
|
54
|
+
marginBottom: 30
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
var ConfigCheckLicense = /*#__PURE__*/function (_ConfigGeneric) {
|
|
59
|
+
(0, _inherits2["default"])(ConfigCheckLicense, _ConfigGeneric);
|
|
60
|
+
var _super = _createSuper(ConfigCheckLicense);
|
|
61
|
+
function ConfigCheckLicense() {
|
|
62
|
+
(0, _classCallCheck2["default"])(this, ConfigCheckLicense);
|
|
63
|
+
return _super.apply(this, arguments);
|
|
64
|
+
}
|
|
65
|
+
(0, _createClass2["default"])(ConfigCheckLicense, [{
|
|
66
|
+
key: "componentDidMount",
|
|
67
|
+
value: function () {
|
|
68
|
+
var _componentDidMount = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
69
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
70
|
+
while (1) {
|
|
71
|
+
switch (_context.prev = _context.next) {
|
|
72
|
+
case 0:
|
|
73
|
+
(0, _get2["default"])((0, _getPrototypeOf2["default"])(ConfigCheckLicense.prototype), "componentDidMount", this).call(this);
|
|
74
|
+
this.setState({
|
|
75
|
+
_error: '',
|
|
76
|
+
running: false,
|
|
77
|
+
showLicenseData: null,
|
|
78
|
+
foundSuitableLicense: false,
|
|
79
|
+
licenseOfflineCheck: false,
|
|
80
|
+
result: null
|
|
81
|
+
});
|
|
82
|
+
case 2:
|
|
83
|
+
case "end":
|
|
84
|
+
return _context.stop();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}, _callee, this);
|
|
88
|
+
}));
|
|
89
|
+
function componentDidMount() {
|
|
90
|
+
return _componentDidMount.apply(this, arguments);
|
|
91
|
+
}
|
|
92
|
+
return componentDidMount;
|
|
93
|
+
}()
|
|
94
|
+
}, {
|
|
95
|
+
key: "renderErrorDialog",
|
|
96
|
+
value: function renderErrorDialog() {
|
|
97
|
+
var _this = this;
|
|
98
|
+
if (this.state._error && !this.state.showLicenseData) {
|
|
99
|
+
return /*#__PURE__*/_react["default"].createElement(_Error["default"], {
|
|
100
|
+
text: this.state._error,
|
|
101
|
+
classes: undefined,
|
|
102
|
+
onClose: function onClose() {
|
|
103
|
+
return _this.setState({
|
|
104
|
+
_error: ''
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
} else {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}, {
|
|
113
|
+
key: "renderMessageDialog",
|
|
114
|
+
value: function renderMessageDialog() {
|
|
115
|
+
var _this2 = this;
|
|
116
|
+
if (this.state.showLicenseData) {
|
|
117
|
+
var pre = Object.keys(this.state.showLicenseData).map(function (key) {
|
|
118
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
119
|
+
key: key
|
|
120
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
121
|
+
className: _this2.props.classes.licLabel
|
|
122
|
+
}, key.replace(/_/g, ' '), ":"), " ", _this2.state.showLicenseData[key]);
|
|
123
|
+
});
|
|
124
|
+
return /*#__PURE__*/_react["default"].createElement(_material.Dialog, {
|
|
125
|
+
open: !0,
|
|
126
|
+
onClose: function onClose() {
|
|
127
|
+
return _this2.setState({
|
|
128
|
+
showLicenseData: null
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}, /*#__PURE__*/_react["default"].createElement(_material.DialogTitle, null, /*#__PURE__*/_react["default"].createElement("span", {
|
|
132
|
+
className: this.state.result ? this.props.classes.okTitle : this.props.classes.errorTitle
|
|
133
|
+
}, _i18n["default"].t('ra_License %s', this.state.result ? 'OK' : 'INVALID'))), /*#__PURE__*/_react["default"].createElement(_material.DialogContent, null, this.state._error ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
134
|
+
className: this.props.classes.errorText
|
|
135
|
+
}, this.state._error) : null, pre), /*#__PURE__*/_react["default"].createElement(_material.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_material.Button, {
|
|
136
|
+
onClick: function onClick() {
|
|
137
|
+
return _this2.setState({
|
|
138
|
+
showLicenseData: null
|
|
139
|
+
});
|
|
140
|
+
},
|
|
141
|
+
color: "primary",
|
|
142
|
+
variant: "contained"
|
|
143
|
+
}, _i18n["default"].t('ra_Close'))));
|
|
144
|
+
} else {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}, {
|
|
149
|
+
key: "findInLicenseManager",
|
|
150
|
+
value: function () {
|
|
151
|
+
var _findInLicenseManager = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(adapterName) {
|
|
152
|
+
var _licenses$native, _licenses$native$lice;
|
|
153
|
+
var licenses, _useLicense, useLicense, now, uuid, _uuidObj$native, uuidObj, version, _aObj$common, aObj;
|
|
154
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
155
|
+
while (1) {
|
|
156
|
+
switch (_context2.prev = _context2.next) {
|
|
157
|
+
case 0:
|
|
158
|
+
_context2.next = 2;
|
|
159
|
+
return this.props.socket.getObject('system.licenses');
|
|
160
|
+
case 2:
|
|
161
|
+
licenses = _context2.sent;
|
|
162
|
+
if (!(licenses !== null && licenses !== void 0 && (_licenses$native = licenses["native"]) !== null && _licenses$native !== void 0 && (_licenses$native$lice = _licenses$native.licenses) !== null && _licenses$native$lice !== void 0 && _licenses$native$lice.length)) {
|
|
163
|
+
_context2.next = 19;
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
// enable license manager
|
|
167
|
+
now = Date.now();
|
|
168
|
+
if (!this.props.schema.uuid) {
|
|
169
|
+
_context2.next = 10;
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
_context2.next = 8;
|
|
173
|
+
return this.props.socket.getObject('system.meta.uuid');
|
|
174
|
+
case 8:
|
|
175
|
+
uuidObj = _context2.sent;
|
|
176
|
+
uuid = uuidObj === null || uuidObj === void 0 ? void 0 : (_uuidObj$native = uuidObj["native"]) === null || _uuidObj$native === void 0 ? void 0 : _uuidObj$native.uuid;
|
|
177
|
+
case 10:
|
|
178
|
+
if (!this.props.schema.version) {
|
|
179
|
+
_context2.next = 15;
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
_context2.next = 13;
|
|
183
|
+
return this.props.socket.getObject("system.adapter.".concat(adapterName));
|
|
184
|
+
case 13:
|
|
185
|
+
aObj = _context2.sent;
|
|
186
|
+
version = aObj === null || aObj === void 0 ? void 0 : (_aObj$common = aObj.common) === null || _aObj$common === void 0 ? void 0 : _aObj$common.version;
|
|
187
|
+
case 15:
|
|
188
|
+
// find license for vis
|
|
189
|
+
licenses["native"].licenses.forEach(function (license) {
|
|
190
|
+
if (!license.validTill || license.validTill === '0000-00-00 00:00:00' || new Date(license.validTill).getTime() > now) {
|
|
191
|
+
var parts = (license.product || '').split('.');
|
|
192
|
+
if (parts[1] === adapterName && (!useLicense || license.invoice !== 'free') && (!uuid || !license.uuid || license.uuid === uuid) && ConfigCheckLicense.isVersionValid(version, license.version, license.invoice, adapterName)) {
|
|
193
|
+
useLicense = license;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
return _context2.abrupt("return", (_useLicense = useLicense) === null || _useLicense === void 0 ? void 0 : _useLicense.json);
|
|
198
|
+
case 19:
|
|
199
|
+
return _context2.abrupt("return", false);
|
|
200
|
+
case 20:
|
|
201
|
+
case "end":
|
|
202
|
+
return _context2.stop();
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}, _callee2, this);
|
|
206
|
+
}));
|
|
207
|
+
function findInLicenseManager(_x) {
|
|
208
|
+
return _findInLicenseManager.apply(this, arguments);
|
|
209
|
+
}
|
|
210
|
+
return findInLicenseManager;
|
|
211
|
+
}()
|
|
212
|
+
}, {
|
|
213
|
+
key: "checkLicense",
|
|
214
|
+
value: function () {
|
|
215
|
+
var _checkLicense = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(license, adapterName) {
|
|
216
|
+
var uuid, _uuidObj$native2, uuidObj, version, _aObj$common2, aObj, _data, response, data, _data2, showLicenseData, validTill, parts, _error$response, _data3, _parts;
|
|
217
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
218
|
+
while (1) {
|
|
219
|
+
switch (_context3.prev = _context3.next) {
|
|
220
|
+
case 0:
|
|
221
|
+
if (!this.props.schema.uuid) {
|
|
222
|
+
_context3.next = 5;
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
_context3.next = 3;
|
|
226
|
+
return this.props.socket.getObject('system.meta.uuid');
|
|
227
|
+
case 3:
|
|
228
|
+
uuidObj = _context3.sent;
|
|
229
|
+
uuid = uuidObj === null || uuidObj === void 0 ? void 0 : (_uuidObj$native2 = uuidObj["native"]) === null || _uuidObj$native2 === void 0 ? void 0 : _uuidObj$native2.uuid;
|
|
230
|
+
case 5:
|
|
231
|
+
if (!this.props.schema.version) {
|
|
232
|
+
_context3.next = 10;
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
_context3.next = 8;
|
|
236
|
+
return this.props.socket.getObject("system.adapter.".concat(adapterName));
|
|
237
|
+
case 8:
|
|
238
|
+
aObj = _context3.sent;
|
|
239
|
+
version = aObj === null || aObj === void 0 ? void 0 : (_aObj$common2 = aObj.common) === null || _aObj$common2 === void 0 ? void 0 : _aObj$common2.version;
|
|
240
|
+
case 10:
|
|
241
|
+
_context3.prev = 10;
|
|
242
|
+
_context3.next = 13;
|
|
243
|
+
return window.fetch('https://iobroker.net/api/v1/public/cert/', {
|
|
244
|
+
method: 'POST',
|
|
245
|
+
body: JSON.stringify({
|
|
246
|
+
json: license,
|
|
247
|
+
uuid: uuid
|
|
248
|
+
}),
|
|
249
|
+
headers: {
|
|
250
|
+
'Content-Type': 'text/plain'
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
case 13:
|
|
254
|
+
response = _context3.sent;
|
|
255
|
+
_context3.next = 16;
|
|
256
|
+
return response.text();
|
|
257
|
+
case 16:
|
|
258
|
+
data = _context3.sent;
|
|
259
|
+
try {
|
|
260
|
+
data = JSON.parse(data);
|
|
261
|
+
} catch (e) {
|
|
262
|
+
// ignore
|
|
263
|
+
}
|
|
264
|
+
if (!((_data = data) !== null && _data !== void 0 && _data.error)) {
|
|
265
|
+
_context3.next = 30;
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
_context3.prev = 19;
|
|
269
|
+
_data2 = ConfigCheckLicense.parseJwt(license);
|
|
270
|
+
return _context3.abrupt("return", this.setState({
|
|
271
|
+
_error: _data2.error,
|
|
272
|
+
showLicenseData: _data2,
|
|
273
|
+
result: false,
|
|
274
|
+
running: false
|
|
275
|
+
}));
|
|
276
|
+
case 24:
|
|
277
|
+
_context3.prev = 24;
|
|
278
|
+
_context3.t0 = _context3["catch"](19);
|
|
279
|
+
console.log('Cannot parse license');
|
|
280
|
+
return _context3.abrupt("return", this.setState({
|
|
281
|
+
_error: data.error,
|
|
282
|
+
result: false,
|
|
283
|
+
running: false
|
|
284
|
+
}));
|
|
285
|
+
case 28:
|
|
286
|
+
_context3.next = 49;
|
|
287
|
+
break;
|
|
288
|
+
case 30:
|
|
289
|
+
showLicenseData = null;
|
|
290
|
+
try {
|
|
291
|
+
showLicenseData = ConfigCheckLicense.parseJwt(license);
|
|
292
|
+
} catch (e) {}
|
|
293
|
+
if (!data) {
|
|
294
|
+
_context3.next = 48;
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
validTill = data.validTill || data.valid_till;
|
|
298
|
+
if (!(validTill && validTill !== '0000-00-00 00:00:00' && new Date(validTill).getTime() < Date.now())) {
|
|
299
|
+
_context3.next = 36;
|
|
300
|
+
break;
|
|
301
|
+
}
|
|
302
|
+
return _context3.abrupt("return", this.setState({
|
|
303
|
+
_error: _i18n["default"].t('ra_License expired on %s', new Date(validTill).toLocaleString()),
|
|
304
|
+
licenseOfflineCheck: true,
|
|
305
|
+
showLicenseData: showLicenseData,
|
|
306
|
+
result: false,
|
|
307
|
+
running: false
|
|
308
|
+
}));
|
|
309
|
+
case 36:
|
|
310
|
+
parts = (data.name || '').split('.');
|
|
311
|
+
if (!(parts[1] === adapterName)) {
|
|
312
|
+
_context3.next = 45;
|
|
313
|
+
break;
|
|
314
|
+
}
|
|
315
|
+
if (!(uuid && data.uuid && data.uuid !== uuid)) {
|
|
316
|
+
_context3.next = 40;
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
return _context3.abrupt("return", this.setState({
|
|
320
|
+
_error: _i18n["default"].t('ra_Serial number (UUID) "%s" in license is for other device.', data.uuid),
|
|
321
|
+
licenseOfflineCheck: true,
|
|
322
|
+
showLicenseData: showLicenseData,
|
|
323
|
+
result: false,
|
|
324
|
+
running: false
|
|
325
|
+
}));
|
|
326
|
+
case 40:
|
|
327
|
+
if (ConfigCheckLicense.isVersionValid(version, data.version, data.invoice, adapterName)) {
|
|
328
|
+
_context3.next = 42;
|
|
329
|
+
break;
|
|
330
|
+
}
|
|
331
|
+
return _context3.abrupt("return", this.setState({
|
|
332
|
+
_error: _i18n["default"].t('ra_License is for version %s, but required version is %s', data.version, this.props.schema.version),
|
|
333
|
+
licenseOfflineCheck: true,
|
|
334
|
+
showLicenseData: showLicenseData,
|
|
335
|
+
result: false,
|
|
336
|
+
running: false
|
|
337
|
+
}));
|
|
338
|
+
case 42:
|
|
339
|
+
return _context3.abrupt("return", this.setState({
|
|
340
|
+
licenseOfflineCheck: true,
|
|
341
|
+
showLicenseData: showLicenseData,
|
|
342
|
+
result: true,
|
|
343
|
+
running: false
|
|
344
|
+
}));
|
|
345
|
+
case 45:
|
|
346
|
+
return _context3.abrupt("return", this.setState({
|
|
347
|
+
_error: _i18n["default"].t('ra_License for other product "%s"', data.name),
|
|
348
|
+
licenseOfflineCheck: true,
|
|
349
|
+
showLicenseData: showLicenseData,
|
|
350
|
+
result: false,
|
|
351
|
+
running: false
|
|
352
|
+
}));
|
|
353
|
+
case 46:
|
|
354
|
+
_context3.next = 49;
|
|
355
|
+
break;
|
|
356
|
+
case 48:
|
|
357
|
+
throw new Error('ra_Invalid answer from server');
|
|
358
|
+
case 49:
|
|
359
|
+
_context3.next = 74;
|
|
360
|
+
break;
|
|
361
|
+
case 51:
|
|
362
|
+
_context3.prev = 51;
|
|
363
|
+
_context3.t1 = _context3["catch"](10);
|
|
364
|
+
if (!((_context3.t1 === null || _context3.t1 === void 0 ? void 0 : (_error$response = _context3.t1.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 404)) {
|
|
365
|
+
_context3.next = 55;
|
|
366
|
+
break;
|
|
367
|
+
}
|
|
368
|
+
return _context3.abrupt("return", this.setState({
|
|
369
|
+
_error: _i18n["default"].t('ra_License does not exist'),
|
|
370
|
+
result: false,
|
|
371
|
+
running: false
|
|
372
|
+
}));
|
|
373
|
+
case 55:
|
|
374
|
+
_context3.prev = 55;
|
|
375
|
+
_data3 = ConfigCheckLicense.parseJwt(license);
|
|
376
|
+
_parts = (_data3.name || '').split('.');
|
|
377
|
+
if (!(_data3.valid_till && _data3.valid_till !== '0000-00-00 00:00:00' && new Date(_data3.valid_till).getTime() < Date.now())) {
|
|
378
|
+
_context3.next = 60;
|
|
379
|
+
break;
|
|
380
|
+
}
|
|
381
|
+
return _context3.abrupt("return", this.setState({
|
|
382
|
+
_error: _i18n["default"].t('ra_License expired on %s', new Date(_data3.valid_till).toLocaleString()),
|
|
383
|
+
showLicenseData: _data3,
|
|
384
|
+
licenseOfflineCheck: true,
|
|
385
|
+
running: false,
|
|
386
|
+
result: false
|
|
387
|
+
}));
|
|
388
|
+
case 60:
|
|
389
|
+
if (!(_parts[1] === adapterName)) {
|
|
390
|
+
_context3.next = 68;
|
|
391
|
+
break;
|
|
392
|
+
}
|
|
393
|
+
if (!(uuid && _data3.uuid && _data3.uuid !== uuid)) {
|
|
394
|
+
_context3.next = 63;
|
|
395
|
+
break;
|
|
396
|
+
}
|
|
397
|
+
return _context3.abrupt("return", this.setState({
|
|
398
|
+
_error: _i18n["default"].t('ra_Serial number (UUID) "%s" in license is for other device.', _data3.uuid),
|
|
399
|
+
showLicenseData: _data3,
|
|
400
|
+
licenseOfflineCheck: true,
|
|
401
|
+
result: false,
|
|
402
|
+
running: false
|
|
403
|
+
}));
|
|
404
|
+
case 63:
|
|
405
|
+
if (ConfigCheckLicense.isVersionValid(version, _data3.version, _data3.invoice, adapterName)) {
|
|
406
|
+
_context3.next = 65;
|
|
407
|
+
break;
|
|
408
|
+
}
|
|
409
|
+
return _context3.abrupt("return", this.setState({
|
|
410
|
+
_error: _i18n["default"].t('ra_License is for version %s, but required version is %s', _data3.version, this.props.schema.version),
|
|
411
|
+
licenseOfflineCheck: true,
|
|
412
|
+
showLicenseData: _data3,
|
|
413
|
+
result: false,
|
|
414
|
+
running: false
|
|
415
|
+
}));
|
|
416
|
+
case 65:
|
|
417
|
+
return _context3.abrupt("return", this.setState({
|
|
418
|
+
result: true,
|
|
419
|
+
licenseOfflineCheck: true
|
|
420
|
+
}));
|
|
421
|
+
case 68:
|
|
422
|
+
return _context3.abrupt("return", this.setState({
|
|
423
|
+
_error: _i18n["default"].t('ra_License for other product "%s"', _data3.name),
|
|
424
|
+
licenseOfflineCheck: true,
|
|
425
|
+
showLicenseData: _data3,
|
|
426
|
+
result: false,
|
|
427
|
+
running: false
|
|
428
|
+
}));
|
|
429
|
+
case 69:
|
|
430
|
+
_context3.next = 74;
|
|
431
|
+
break;
|
|
432
|
+
case 71:
|
|
433
|
+
_context3.prev = 71;
|
|
434
|
+
_context3.t2 = _context3["catch"](55);
|
|
435
|
+
return _context3.abrupt("return", this.setState({
|
|
436
|
+
_error: _i18n["default"].t('ra_Cannot decode license'),
|
|
437
|
+
result: false,
|
|
438
|
+
licenseOfflineCheck: true,
|
|
439
|
+
running: false
|
|
440
|
+
}));
|
|
441
|
+
case 74:
|
|
442
|
+
case "end":
|
|
443
|
+
return _context3.stop();
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}, _callee3, this, [[10, 51], [19, 24], [55, 71]]);
|
|
447
|
+
}));
|
|
448
|
+
function checkLicense(_x2, _x3) {
|
|
449
|
+
return _checkLicense.apply(this, arguments);
|
|
450
|
+
}
|
|
451
|
+
return checkLicense;
|
|
452
|
+
}()
|
|
453
|
+
}, {
|
|
454
|
+
key: "_onClick",
|
|
455
|
+
value: function () {
|
|
456
|
+
var _onClick2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
457
|
+
var license;
|
|
458
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
459
|
+
while (1) {
|
|
460
|
+
switch (_context4.prev = _context4.next) {
|
|
461
|
+
case 0:
|
|
462
|
+
this.setState({
|
|
463
|
+
running: true
|
|
464
|
+
});
|
|
465
|
+
if (!this.props.data.useLicenseManager) {
|
|
466
|
+
_context4.next = 7;
|
|
467
|
+
break;
|
|
468
|
+
}
|
|
469
|
+
_context4.next = 4;
|
|
470
|
+
return this.findInLicenseManager(this.props.adapterName);
|
|
471
|
+
case 4:
|
|
472
|
+
license = _context4.sent;
|
|
473
|
+
_context4.next = 8;
|
|
474
|
+
break;
|
|
475
|
+
case 7:
|
|
476
|
+
license = this.props.data.license;
|
|
477
|
+
case 8:
|
|
478
|
+
if (!license) {
|
|
479
|
+
_context4.next = 13;
|
|
480
|
+
break;
|
|
481
|
+
}
|
|
482
|
+
_context4.next = 11;
|
|
483
|
+
return this.checkLicense(license, this.props.adapterName, this.props.schema.uuid);
|
|
484
|
+
case 11:
|
|
485
|
+
_context4.next = 14;
|
|
486
|
+
break;
|
|
487
|
+
case 13:
|
|
488
|
+
this.setState({
|
|
489
|
+
_error: _i18n["default"].t('ra_Suitable license not found in license manager'),
|
|
490
|
+
result: false,
|
|
491
|
+
running: false
|
|
492
|
+
});
|
|
493
|
+
case 14:
|
|
494
|
+
case "end":
|
|
495
|
+
return _context4.stop();
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}, _callee4, this);
|
|
499
|
+
}));
|
|
500
|
+
function _onClick() {
|
|
501
|
+
return _onClick2.apply(this, arguments);
|
|
502
|
+
}
|
|
503
|
+
return _onClick;
|
|
504
|
+
}()
|
|
505
|
+
}, {
|
|
506
|
+
key: "renderItem",
|
|
507
|
+
value: function renderItem(error, disabled, defaultValue) {
|
|
508
|
+
var _this3 = this;
|
|
509
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
510
|
+
className: this.props.classes.fullWidth
|
|
511
|
+
}, /*#__PURE__*/_react["default"].createElement(_material.Button, {
|
|
512
|
+
variant: this.props.schema.variant || 'outlined',
|
|
513
|
+
color: this.props.schema.color || 'primary',
|
|
514
|
+
className: this.props.classes.fullWidth,
|
|
515
|
+
disabled: !this.props.data.license && !this.props.data.useLicenseManager,
|
|
516
|
+
startIcon: /*#__PURE__*/_react["default"].createElement(_Send["default"], null),
|
|
517
|
+
onClick: function onClick() {
|
|
518
|
+
return _this3._onClick();
|
|
519
|
+
}
|
|
520
|
+
}, this.state.running ? /*#__PURE__*/_react["default"].createElement(_material.CircularProgress, {
|
|
521
|
+
size: 20,
|
|
522
|
+
style: {
|
|
523
|
+
marginRight: 8
|
|
524
|
+
}
|
|
525
|
+
}) : null, this.getText(this.props.schema.label || 'ra_Check license', this.props.schema.noTranslation)), this.renderMessageDialog());
|
|
526
|
+
}
|
|
527
|
+
}], [{
|
|
528
|
+
key: "parseJwt",
|
|
529
|
+
value: function parseJwt(token) {
|
|
530
|
+
var base64Url = token.split('.')[1];
|
|
531
|
+
var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
|
|
532
|
+
var jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {
|
|
533
|
+
return "%".concat("00".concat(c.charCodeAt(0).toString(16)).slice(-2));
|
|
534
|
+
}).join(''));
|
|
535
|
+
try {
|
|
536
|
+
return JSON.parse(jsonPayload);
|
|
537
|
+
} catch (e) {
|
|
538
|
+
return null;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
}, {
|
|
542
|
+
key: "isVersionValid",
|
|
543
|
+
value: function isVersionValid(version, rule, invoice, adapterName) {
|
|
544
|
+
if (!rule || !version) {
|
|
545
|
+
return true;
|
|
546
|
+
}
|
|
547
|
+
var result = true;
|
|
548
|
+
var _version$split = version.split('.'),
|
|
549
|
+
_version$split2 = (0, _slicedToArray2["default"])(_version$split, 1),
|
|
550
|
+
major = _version$split2[0];
|
|
551
|
+
if (rule.startsWith('>=')) {
|
|
552
|
+
result = parseInt(major, 10) >= parseInt(rule.substring(2, 10));
|
|
553
|
+
} else if (rule.startsWith('<=')) {
|
|
554
|
+
result = parseInt(major, 10) <= parseInt(rule.substring(2, 10));
|
|
555
|
+
} else if (rule.startsWith('>')) {
|
|
556
|
+
result = parseInt(major, 10) > parseInt(rule.substring(1, 10));
|
|
557
|
+
} else if (rule.startsWith('<')) {
|
|
558
|
+
result = parseInt(major, 10) < parseInt(rule.substring(1, 10));
|
|
559
|
+
} else if (rule.startsWith('=')) {
|
|
560
|
+
result = parseInt(major, 10) === parseInt(rule.substring(1, 10));
|
|
561
|
+
} else if (rule.startsWith('==')) {
|
|
562
|
+
result = parseInt(major, 10) === parseInt(rule.substring(2, 10));
|
|
563
|
+
} else if (rule.startsWith('===')) {
|
|
564
|
+
result = parseInt(major, 10) === parseInt(rule.substring(3, 10));
|
|
565
|
+
}
|
|
566
|
+
if (!result && invoice && adapterName) {
|
|
567
|
+
// all commercial licenses are valid for all versions
|
|
568
|
+
if (invoice !== 'free') {
|
|
569
|
+
return true;
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
return true;
|
|
573
|
+
}
|
|
574
|
+
}]);
|
|
575
|
+
return ConfigCheckLicense;
|
|
576
|
+
}(_ConfigGeneric2["default"]);
|
|
577
|
+
ConfigCheckLicense.propTypes = {
|
|
578
|
+
socket: _propTypes["default"].object.isRequired,
|
|
579
|
+
themeType: _propTypes["default"].string,
|
|
580
|
+
themeName: _propTypes["default"].string,
|
|
581
|
+
style: _propTypes["default"].object,
|
|
582
|
+
className: _propTypes["default"].string,
|
|
583
|
+
data: _propTypes["default"].object.isRequired,
|
|
584
|
+
schema: _propTypes["default"].object,
|
|
585
|
+
onError: _propTypes["default"].func,
|
|
586
|
+
onChange: _propTypes["default"].func,
|
|
587
|
+
adapterName: _propTypes["default"].string,
|
|
588
|
+
instance: _propTypes["default"].number
|
|
589
|
+
};
|
|
590
|
+
var _default = (0, _styles.withStyles)(styles)(ConfigCheckLicense);
|
|
591
|
+
exports["default"] = _default;
|
|
592
|
+
//# sourceMappingURL=ConfigCheckLicense.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigCheckLicense.js","names":["styles","theme","fullWidth","width","icon","height","marginRight","licLabel","fontWeight","minWidth","textTransform","display","licValue","errorTitle","color","palette","mode","okTitle","errorText","marginBottom","ConfigCheckLicense","setState","_error","running","showLicenseData","foundSuitableLicense","licenseOfflineCheck","result","state","undefined","pre","Object","keys","map","key","props","classes","replace","I18n","t","adapterName","socket","getObject","licenses","length","now","Date","schema","uuid","uuidObj","version","aObj","common","forEach","license","validTill","getTime","parts","product","split","useLicense","invoice","isVersionValid","json","window","fetch","method","body","JSON","stringify","headers","response","text","data","parse","e","error","parseJwt","console","log","valid_till","toLocaleString","name","Error","status","useLicenseManager","findInLicenseManager","checkLicense","disabled","defaultValue","variant","_onClick","getText","label","noTranslation","renderMessageDialog","token","base64Url","base64","jsonPayload","decodeURIComponent","atob","c","charCodeAt","toString","slice","join","rule","major","startsWith","parseInt","substring","ConfigGeneric","propTypes","PropTypes","object","isRequired","themeType","string","themeName","style","className","onError","func","onChange","instance","number","withStyles"],"sources":["JsonConfigComponent/ConfigCheckLicense.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\n\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogContent,\n DialogActions,\n DialogTitle,\n} from '@mui/material';\n\nimport IconSend from '@mui/icons-material/Send';\n\nimport I18n from '../../i18n';\nimport DialogError from '../../Dialogs/Error';\n\nimport ConfigGeneric from './ConfigGeneric';\n\nconst styles = theme => ({\n fullWidth: {\n width: '100%'\n },\n icon: {\n width: 24,\n height: 24,\n marginRight: 4\n },\n licLabel: {\n fontWeight: 'bold',\n minWidth: 100,\n textTransform: 'capitalize',\n display: 'inline-block',\n },\n licValue: {\n fontWeight: 'normal'\n },\n errorTitle: {\n color: theme.palette.mode === 'dark' ? '#e39191' : '#b62020',\n },\n okTitle: {\n color: theme.palette.mode === 'dark' ? '#6fd56f' : '#007c00',\n },\n errorText: {\n color: theme.palette.mode === 'dark' ? '#e39191' : '#b62020',\n marginBottom: 30,\n }\n});\n\nclass ConfigCheckLicense extends ConfigGeneric {\n async componentDidMount() {\n super.componentDidMount();\n this.setState( {\n _error: '',\n running: false,\n showLicenseData: null,\n foundSuitableLicense: false,\n licenseOfflineCheck: false,\n result: null,\n });\n }\n\n renderErrorDialog() {\n if (this.state._error && !this.state.showLicenseData) {\n return <DialogError text={this.state._error} classes={undefined} onClose={() => this.setState({_error: ''})} />;\n } else {\n return null;\n }\n }\n\n renderMessageDialog() {\n if (this.state.showLicenseData) {\n const pre = Object.keys(this.state.showLicenseData).map(key =>\n <div key={key}><div className={this.props.classes.licLabel}>{key.replace(/_/g, ' ')}:</div> {this.state.showLicenseData[key]}</div>);\n\n return <Dialog\n open={!0}\n onClose={() => this.setState({ showLicenseData: null })}\n >\n <DialogTitle>\n <span\n className={this.state.result ? this.props.classes.okTitle : this.props.classes.errorTitle}\n >\n {I18n.t('ra_License %s', this.state.result ? 'OK' : 'INVALID')}\n </span>\n </DialogTitle>\n <DialogContent>\n {this.state._error ? <div className={this.props.classes.errorText}>{this.state._error}</div> : null}\n {pre}\n </DialogContent>\n <DialogActions>\n <Button\n onClick={() => this.setState({ showLicenseData: null })}\n color=\"primary\"\n variant=\"contained\"\n >\n {I18n.t('ra_Close')}\n </Button>\n </DialogActions>\n </Dialog>\n } else {\n return null;\n }\n }\n\n static parseJwt(token) {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(atob(base64).split('').map(c => `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`).join(''));\n try {\n return JSON.parse(jsonPayload);\n } catch (e) {\n return null;\n }\n }\n\n static isVersionValid(version, rule, invoice, adapterName) {\n if (!rule || !version) {\n return true;\n }\n let result = true;\n const [major] = version.split('.');\n if (rule.startsWith('>=')) {\n result = parseInt(major, 10) >= parseInt(rule.substring(2, 10));\n } else if (rule.startsWith('<=')) {\n result = parseInt(major, 10) <= parseInt(rule.substring(2, 10));\n } else if (rule.startsWith('>')) {\n result = parseInt(major, 10) > parseInt(rule.substring(1, 10));\n } else if (rule.startsWith('<')) {\n result = parseInt(major, 10) < parseInt(rule.substring(1, 10));\n } else if (rule.startsWith('=')) {\n result = parseInt(major, 10) === parseInt(rule.substring(1, 10));\n } else if (rule.startsWith('==')) {\n result = parseInt(major, 10) === parseInt(rule.substring(2, 10));\n } else if (rule.startsWith('===')) {\n result = parseInt(major, 10) === parseInt(rule.substring(3, 10));\n }\n\n if (!result && invoice && adapterName) {\n // all commercial licenses are valid for all versions\n if (invoice !== 'free') {\n return true;\n }\n }\n\n return true;\n }\n\n async findInLicenseManager(adapterName) {\n // read if license manager is supported\n const licenses = await this.props.socket.getObject('system.licenses');\n if (licenses?.native?.licenses?.length) {\n // enable license manager\n let useLicense;\n const now = Date.now();\n\n let uuid;\n if (this.props.schema.uuid) {\n const uuidObj = await this.props.socket.getObject('system.meta.uuid');\n uuid = uuidObj?.native?.uuid;\n }\n let version;\n if (this.props.schema.version) {\n const aObj = await this.props.socket.getObject(`system.adapter.${adapterName}`);\n version = aObj?.common?.version;\n }\n\n // find license for vis\n licenses.native.licenses.forEach(license => {\n if (!license.validTill || license.validTill === '0000-00-00 00:00:00' || new Date(license.validTill).getTime() > now) {\n const parts = (license.product || '').split('.');\n if (parts[1] === adapterName &&\n (!useLicense || license.invoice !== 'free') &&\n (!uuid || !license.uuid || license.uuid === uuid) &&\n ConfigCheckLicense.isVersionValid(version, license.version, license.invoice, adapterName)\n ) {\n useLicense = license;\n }\n }\n });\n\n return useLicense?.json;\n } else {\n return false;\n }\n }\n\n async checkLicense(license, adapterName) {\n let uuid;\n if (this.props.schema.uuid) {\n const uuidObj = await this.props.socket.getObject('system.meta.uuid');\n uuid = uuidObj?.native?.uuid;\n }\n let version;\n if (this.props.schema.version) {\n const aObj = await this.props.socket.getObject(`system.adapter.${adapterName}`);\n version = aObj?.common?.version;\n }\n\n try {\n const response = await window.fetch('https://iobroker.net/api/v1/public/cert/', {\n method: 'POST',\n body: JSON.stringify({json: license, uuid}),\n headers: {\n 'Content-Type': 'text/plain'\n },\n });\n let data = await response.text();\n try {\n data = JSON.parse(data);\n } catch (e) {\n // ignore\n }\n\n if (data?.error) {\n try {\n const data = ConfigCheckLicense.parseJwt(license);\n return this.setState({\n _error: data.error,\n showLicenseData: data,\n result: false,\n running: false,\n });\n } catch (e) {\n console.log('Cannot parse license')\n return this.setState({ _error: data.error, result: false, running: false });\n }\n } else {\n let showLicenseData = null;\n try {\n showLicenseData = ConfigCheckLicense.parseJwt(license);\n } catch (e) {\n\n }\n if (data) {\n const validTill = data.validTill || data.valid_till;\n if (validTill && validTill !== '0000-00-00 00:00:00' && new Date(validTill).getTime() < Date.now()) {\n return this.setState({\n _error: I18n.t('ra_License expired on %s', new Date(validTill).toLocaleString()),\n licenseOfflineCheck: true,\n showLicenseData,\n result: false,\n running: false,\n });\n }\n const parts = (data.name || '').split('.');\n if (parts[1] === adapterName) {\n // check UUID\n if (uuid && data.uuid && data.uuid !== uuid) {\n return this.setState({\n _error: I18n.t('ra_Serial number (UUID) \"%s\" in license is for other device.', data.uuid),\n licenseOfflineCheck: true,\n showLicenseData,\n result: false,\n running: false,\n });\n }\n\n if (!ConfigCheckLicense.isVersionValid(version, data.version, data.invoice, adapterName)) {\n return this.setState({\n _error: I18n.t('ra_License is for version %s, but required version is %s', data.version, this.props.schema.version),\n licenseOfflineCheck: true,\n showLicenseData,\n result: false,\n running: false,\n });\n }\n\n return this.setState({\n licenseOfflineCheck: true,\n showLicenseData,\n result: true,\n running: false,\n });\n } else {\n return this.setState({\n _error: I18n.t('ra_License for other product \"%s\"', data.name),\n licenseOfflineCheck: true,\n showLicenseData,\n result: false,\n running: false,\n });\n }\n } else {\n throw new Error('ra_Invalid answer from server');\n }\n }\n } catch (error) {\n if (error?.response?.status === 404) {\n return this.setState({ _error: I18n.t('ra_License does not exist'), result: false, running: false });\n }\n // check offline\n try {\n const data = ConfigCheckLicense.parseJwt(license);\n const parts = (data.name || '').split('.');\n\n if (data.valid_till && data.valid_till !== '0000-00-00 00:00:00' && new Date(data.valid_till).getTime() < Date.now()) {\n return this.setState({\n _error: I18n.t('ra_License expired on %s', new Date(data.valid_till).toLocaleString()),\n showLicenseData: data,\n licenseOfflineCheck: true,\n running: false,\n result: false,\n });\n }\n if (parts[1] === adapterName) {\n // check UUID\n if (uuid && data.uuid && data.uuid !== uuid) {\n return this.setState({\n _error: I18n.t('ra_Serial number (UUID) \"%s\" in license is for other device.', data.uuid),\n showLicenseData: data,\n licenseOfflineCheck: true,\n result: false,\n running: false,\n });\n }\n\n if (!ConfigCheckLicense.isVersionValid(version, data.version, data.invoice, adapterName)) {\n return this.setState({\n _error: I18n.t('ra_License is for version %s, but required version is %s', data.version, this.props.schema.version),\n licenseOfflineCheck: true,\n showLicenseData: data,\n result: false,\n running: false,\n });\n }\n\n return this.setState({ result: true, licenseOfflineCheck: true });\n } else {\n return this.setState({\n _error: I18n.t('ra_License for other product \"%s\"', data.name),\n licenseOfflineCheck: true,\n showLicenseData: data,\n result: false,\n running: false,\n });\n }\n } catch (e) {\n return this.setState({ _error: I18n.t('ra_Cannot decode license'), result: false, licenseOfflineCheck: true, running: false });\n }\n }\n }\n\n async _onClick() {\n this.setState({ running: true });\n let license;\n if (this.props.data.useLicenseManager) {\n license = await this.findInLicenseManager(this.props.adapterName);\n } else {\n license = this.props.data.license;\n }\n if (license) {\n await this.checkLicense(license, this.props.adapterName, this.props.schema.uuid);\n } else {\n this.setState({ _error: I18n.t('ra_Suitable license not found in license manager'), result: false, running: false });\n }\n }\n\n renderItem(error, disabled, defaultValue) {\n return <div className={this.props.classes.fullWidth}>\n <Button\n variant={this.props.schema.variant || 'outlined'}\n color={this.props.schema.color || 'primary'}\n className={this.props.classes.fullWidth}\n disabled={!this.props.data.license && !this.props.data.useLicenseManager}\n startIcon={<IconSend />}\n onClick={() => this._onClick()}\n >\n {this.state.running ? <CircularProgress size={20} style={{ marginRight: 8 }} /> : null}\n {this.getText(this.props.schema.label || 'ra_Check license', this.props.schema.noTranslation)}\n </Button>\n {this.renderMessageDialog()}\n </div>;\n }\n}\n\nConfigCheckLicense.propTypes = {\n socket: PropTypes.object.isRequired,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n adapterName: PropTypes.string,\n instance: PropTypes.number,\n};\n\nexport default withStyles(styles)(ConfigCheckLicense);"],"mappings":"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"}
|