@iobroker/adapter-react-v5 7.6.17 → 7.6.19

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.
@@ -1,10 +1,12 @@
1
1
  import { type JSX, Component } from 'react';
2
+ import { type SxProps } from '@mui/material';
2
3
  interface ImageProps {
3
4
  color?: string;
4
5
  src?: string;
5
6
  imagePrefix?: string;
6
7
  className?: string;
7
8
  showError?: boolean;
9
+ sx?: SxProps;
8
10
  }
9
11
  interface ImageState {
10
12
  svg?: boolean;
@@ -1,4 +1,5 @@
1
1
  import React, { Component } from 'react';
2
+ import { Box } from '@mui/material';
2
3
  import { IconNoIcon } from '../icons/IconNoIcon';
3
4
  function getElementFromSource(src) {
4
5
  const svgContainer = document.createElement('div');
@@ -84,7 +85,7 @@ export class Image extends Component {
84
85
  const inner = svg.innerHTML;
85
86
  const svgProps = serializeAttrs(svg.attributes);
86
87
  svg.remove();
87
- return (React.createElement("svg", { className: this.props.className, style: this.state.color ? { color: this.state.color } : {}, ...svgProps, dangerouslySetInnerHTML: { __html: inner } }));
88
+ return (React.createElement(Box, { component: "svg", sx: this.props.sx, className: this.props.className, style: this.state.color ? { color: this.state.color } : undefined, ...svgProps, dangerouslySetInnerHTML: { __html: inner } }));
88
89
  }
89
90
  catch {
90
91
  // ignore
@@ -115,9 +116,9 @@ export class Image extends Component {
115
116
  else if (!src.startsWith('/')) {
116
117
  src = Image.REMOTE_PREFIX + src;
117
118
  }
118
- return (React.createElement("img", { className: this.props.className, src: `https://remote-files.iobroker.in${src}`, alt: "", onError: () => this.props.showError ? this.setState({ imgError: true }) : this.setState({ src: '' }) }));
119
+ return (React.createElement(Box, { component: "img", sx: this.props.sx, className: this.props.className, src: `https://remote-files.iobroker.in${src}`, alt: "", onError: () => this.props.showError ? this.setState({ imgError: true }) : this.setState({ src: '' }) }));
119
120
  }
120
- return (React.createElement("img", { className: this.props.className, src: (this.props.imagePrefix || '') + this.state.src, alt: "", onError: () => this.props.showError ? this.setState({ imgError: true }) : this.setState({ src: '' }) }));
121
+ return (React.createElement(Box, { component: "img", sx: this.props.sx, className: this.props.className, src: (this.props.imagePrefix || '') + this.state.src, alt: "", onError: () => this.props.showError ? this.setState({ imgError: true }) : this.setState({ src: '' }) }));
121
122
  }
122
123
  return null;
123
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Image.js","sourceRoot":"./src/","sources":["Components/Image.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX, Component } from 'react';\n\nimport { IconNoIcon } from '../icons/IconNoIcon';\n\nfunction getElementFromSource(src: string): HTMLElement | null {\n const svgContainer = document.createElement('div');\n svgContainer.innerHTML = src;\n const svg: HTMLElement = svgContainer.firstElementChild as HTMLElement;\n if (svg?.remove) {\n svg.remove();\n } else if (svg) {\n svgContainer.removeChild(svg);\n }\n\n svgContainer.remove();\n return svg;\n}\n\nfunction serializeAttrs(map?: NamedNodeMap): Record<string, string> {\n const ret: Record<string, string> = {};\n if (!map) {\n return ret;\n }\n for (let prop, i = 0; i < map.length; i++) {\n const key = map[i].name;\n if (key === 'class') {\n prop = 'className';\n } else if (!key.startsWith('data-')) {\n prop = key.replace(/[-|:]([a-z])/g, g => g[1].toUpperCase());\n } else {\n prop = key;\n }\n\n ret[prop] = map[i].value;\n }\n return ret;\n}\n\ninterface ImageProps {\n /* The color */\n color?: string;\n /* The source of the image */\n src?: string;\n /* The image prefix (default: './files/') */\n imagePrefix?: string;\n /* The CSS class name */\n className?: string;\n /* Show image errors (or just show no image)? */\n showError?: boolean;\n}\n\ninterface ImageState {\n svg?: boolean;\n created?: boolean;\n color?: string;\n src?: string;\n imgError?: boolean;\n showError?: boolean;\n}\n\n/**\n * A component for displaying an image.\n */\nexport class Image extends Component<ImageProps, ImageState> {\n private svg: JSX.Element | null;\n\n static REMOTE_SERVER: boolean = window.location.hostname.includes('iobroker.in');\n\n static REMOTE_PREFIX: string = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/') + 1);\n\n constructor(props: ImageProps) {\n super(props);\n this.state = {\n svg: !!this.props.src?.startsWith('data:'),\n created: true,\n color: this.props.color || '',\n src: this.props.src || '',\n imgError: false,\n showError: !!this.props.showError,\n };\n\n this.svg = this.state.svg && this.state.src ? this.getSvgFromData(this.state.src) : null;\n }\n\n static getDerivedStateFromProps(props: ImageProps, state: ImageState): Partial<ImageState> | null {\n const newState: ImageState = {};\n let changed = false;\n\n if (props && state && props.src !== state.src) {\n newState.src = props.src;\n newState.svg = props.src?.startsWith('data:');\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.color !== state.color) {\n newState.color = props.color;\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.showError !== state.showError) {\n newState.showError = props.showError;\n changed = true;\n }\n\n return changed ? newState : null;\n }\n\n getSvgFromData(src: string): JSX.Element | null {\n const len = 'data:image/svg+xml;base64,';\n if (!src.startsWith(len)) {\n return null;\n }\n src = src.substring(len.length);\n try {\n src = atob(src);\n const svg: HTMLElement = getElementFromSource(src);\n const inner = svg.innerHTML;\n const svgProps = serializeAttrs(svg.attributes);\n\n svg.remove();\n\n return (\n <svg\n className={this.props.className}\n style={this.state.color ? { color: this.state.color } : {}}\n {...svgProps}\n dangerouslySetInnerHTML={{ __html: inner }}\n />\n );\n } catch {\n // ignore\n }\n return null;\n }\n\n render(): JSX.Element | null {\n if (this.state.svg) {\n if (!this.state.created) {\n setTimeout(() => {\n this.svg = this.state.src ? this.getSvgFromData(this.state.src) : null;\n this.setState({ created: true });\n }, 50);\n }\n\n return this.svg;\n }\n if (this.state.src) {\n if (this.state.imgError || !this.state.src) {\n return <IconNoIcon className={this.props.className} />;\n }\n if (\n Image.REMOTE_SERVER &&\n !this.state.src.startsWith('http://') &&\n !this.state.src.startsWith('https://')\n ) {\n let src = (this.props.imagePrefix || '') + this.state.src;\n if (src.startsWith('./')) {\n src = Image.REMOTE_PREFIX + src.substring(2);\n } else if (!src.startsWith('/')) {\n src = Image.REMOTE_PREFIX + src;\n }\n return (\n <img\n className={this.props.className}\n src={`https://remote-files.iobroker.in${src}`}\n alt=\"\"\n onError={() =>\n this.props.showError ? this.setState({ imgError: true }) : this.setState({ src: '' })\n }\n />\n );\n }\n\n return (\n <img\n className={this.props.className}\n src={(this.props.imagePrefix || '') + this.state.src}\n alt=\"\"\n onError={() =>\n this.props.showError ? this.setState({ imgError: true }) : this.setState({ src: '' })\n }\n />\n );\n }\n\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"Image.js","sourceRoot":"./src/","sources":["Components/Image.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX, Component } from 'react';\n\nimport { Box, type SxProps } from '@mui/material';\n\nimport { IconNoIcon } from '../icons/IconNoIcon';\n\nfunction getElementFromSource(src: string): HTMLElement | null {\n const svgContainer = document.createElement('div');\n svgContainer.innerHTML = src;\n const svg: HTMLElement = svgContainer.firstElementChild as HTMLElement;\n if (svg?.remove) {\n svg.remove();\n } else if (svg) {\n svgContainer.removeChild(svg);\n }\n\n svgContainer.remove();\n return svg;\n}\n\nfunction serializeAttrs(map?: NamedNodeMap): Record<string, string> {\n const ret: Record<string, string> = {};\n if (!map) {\n return ret;\n }\n for (let prop, i = 0; i < map.length; i++) {\n const key = map[i].name;\n if (key === 'class') {\n prop = 'className';\n } else if (!key.startsWith('data-')) {\n prop = key.replace(/[-|:]([a-z])/g, g => g[1].toUpperCase());\n } else {\n prop = key;\n }\n\n ret[prop] = map[i].value;\n }\n return ret;\n}\n\ninterface ImageProps {\n /* The color */\n color?: string;\n /* The source of the image */\n src?: string;\n /* The image prefix (default: './files/') */\n imagePrefix?: string;\n /* The CSS class name */\n className?: string;\n /* Show image errors (or just show no image)? */\n showError?: boolean;\n sx?: SxProps;\n}\n\ninterface ImageState {\n svg?: boolean;\n created?: boolean;\n color?: string;\n src?: string;\n imgError?: boolean;\n showError?: boolean;\n}\n\n/**\n * A component for displaying an image.\n */\nexport class Image extends Component<ImageProps, ImageState> {\n private svg: JSX.Element | null;\n\n static REMOTE_SERVER: boolean = window.location.hostname.includes('iobroker.in');\n\n static REMOTE_PREFIX: string = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/') + 1);\n\n constructor(props: ImageProps) {\n super(props);\n this.state = {\n svg: !!this.props.src?.startsWith('data:'),\n created: true,\n color: this.props.color || '',\n src: this.props.src || '',\n imgError: false,\n showError: !!this.props.showError,\n };\n\n this.svg = this.state.svg && this.state.src ? this.getSvgFromData(this.state.src) : null;\n }\n\n static getDerivedStateFromProps(props: ImageProps, state: ImageState): Partial<ImageState> | null {\n const newState: ImageState = {};\n let changed = false;\n\n if (props && state && props.src !== state.src) {\n newState.src = props.src;\n newState.svg = props.src?.startsWith('data:');\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.color !== state.color) {\n newState.color = props.color;\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.showError !== state.showError) {\n newState.showError = props.showError;\n changed = true;\n }\n\n return changed ? newState : null;\n }\n\n getSvgFromData(src: string): JSX.Element | null {\n const len = 'data:image/svg+xml;base64,';\n if (!src.startsWith(len)) {\n return null;\n }\n src = src.substring(len.length);\n try {\n src = atob(src);\n const svg: HTMLElement = getElementFromSource(src);\n const inner = svg.innerHTML;\n const svgProps = serializeAttrs(svg.attributes);\n\n svg.remove();\n\n return (\n <Box\n component=\"svg\"\n sx={this.props.sx}\n className={this.props.className}\n style={this.state.color ? { color: this.state.color } : undefined}\n {...svgProps}\n dangerouslySetInnerHTML={{ __html: inner }}\n />\n );\n } catch {\n // ignore\n }\n return null;\n }\n\n render(): JSX.Element | null {\n if (this.state.svg) {\n if (!this.state.created) {\n setTimeout(() => {\n this.svg = this.state.src ? this.getSvgFromData(this.state.src) : null;\n this.setState({ created: true });\n }, 50);\n }\n\n return this.svg;\n }\n if (this.state.src) {\n if (this.state.imgError || !this.state.src) {\n return <IconNoIcon className={this.props.className} />;\n }\n if (\n Image.REMOTE_SERVER &&\n !this.state.src.startsWith('http://') &&\n !this.state.src.startsWith('https://')\n ) {\n let src = (this.props.imagePrefix || '') + this.state.src;\n if (src.startsWith('./')) {\n src = Image.REMOTE_PREFIX + src.substring(2);\n } else if (!src.startsWith('/')) {\n src = Image.REMOTE_PREFIX + src;\n }\n return (\n <Box\n component=\"img\"\n sx={this.props.sx}\n className={this.props.className}\n src={`https://remote-files.iobroker.in${src}`}\n alt=\"\"\n onError={() =>\n this.props.showError ? this.setState({ imgError: true }) : this.setState({ src: '' })\n }\n />\n );\n }\n\n return (\n <Box\n component=\"img\"\n sx={this.props.sx}\n className={this.props.className}\n src={(this.props.imagePrefix || '') + this.state.src}\n alt=\"\"\n onError={() =>\n this.props.showError ? this.setState({ imgError: true }) : this.setState({ src: '' })\n }\n />\n );\n }\n\n return null;\n }\n}\n"]}
@@ -65,15 +65,14 @@ export class LegacyConnection {
65
65
  onCmdExitHandler;
66
66
  systemConfig = null;
67
67
  constructor(props) {
68
- props = props || { protocol: window.location.protocol, host: window.location.hostname };
68
+ props ||= { protocol: window.location.protocol, host: window.location.hostname };
69
69
  this.props = props;
70
70
  this.autoSubscribes = this.props.autoSubscribes || [];
71
71
  this.autoSubscribeLog = this.props.autoSubscribeLog || false;
72
- this.props.protocol = this.props.protocol || window.location.protocol;
73
- this.props.host = this.props.host || window.location.hostname;
74
- this.props.port =
75
- this.props.port ||
76
- (window.location.port === '3000' ? (LegacyConnection.isWeb() ? 8082 : 8081) : window.location.port);
72
+ this.props.protocol ||= window.location.protocol;
73
+ this.props.host ||= window.location.hostname;
74
+ this.props.port ||=
75
+ window.location.port === '3000' ? (LegacyConnection.isWeb() ? 8082 : 8081) : window.location.port;
77
76
  this.props.ioTimeout = Math.max(this.props.ioTimeout || 20000, 20000);
78
77
  this.props.cmdTimeout = Math.max(this.props.cmdTimeout || 5000, 5000);
79
78
  this._instanceSubscriptions = {};
@@ -112,7 +111,7 @@ export class LegacyConnection {
112
111
  // if in index.html the onLoad function not defined
113
112
  if (typeof window.registerSocketOnLoad !== 'function') {
114
113
  // poll if loaded
115
- this.scriptLoadCounter = this.scriptLoadCounter || 0;
114
+ this.scriptLoadCounter ||= 0;
116
115
  this.scriptLoadCounter++;
117
116
  if (this.scriptLoadCounter < 30) {
118
117
  // wait till the script loaded
@@ -216,7 +215,7 @@ export class LegacyConnection {
216
215
  });
217
216
  this._socket.on('reauthenticate', () => LegacyConnection.authenticate());
218
217
  this._socket.on('log', message => {
219
- this.props.onLog && this.props.onLog(message);
218
+ this.props.onLog?.(message);
220
219
  this.onLogHandlers.forEach(cb => cb(message));
221
220
  });
222
221
  this._socket.on('error', (err) => {
@@ -244,9 +243,9 @@ export class LegacyConnection {
244
243
  this._socket.on('stateChange', (id, state) => setTimeout(() => this.stateChange(id, state), 0));
245
244
  this._socket.on('im', (messageType, from, data) => setTimeout(() => this.instanceMessage(messageType, from, data), 0));
246
245
  this._socket.on('fileChange', (id, fileName, size) => setTimeout(() => this.fileChange(id, fileName, size), 0));
247
- this._socket.on('cmdStdout', (id, text) => this.onCmdStdoutHandler && this.onCmdStdoutHandler(id, text));
248
- this._socket.on('cmdStderr', (id, text) => this.onCmdStderrHandler && this.onCmdStderrHandler(id, text));
249
- this._socket.on('cmdExit', (id, exitCode) => this.onCmdExitHandler && this.onCmdExitHandler(id, exitCode));
246
+ this._socket.on('cmdStdout', (id, text) => this.onCmdStdoutHandler?.(id, text));
247
+ this._socket.on('cmdStderr', (id, text) => this.onCmdStderrHandler?.(id, text));
248
+ this._socket.on('cmdExit', (id, exitCode) => this.onCmdExitHandler?.(id, exitCode));
250
249
  }
251
250
  /**
252
251
  * Called internally.
@@ -340,8 +339,10 @@ export class LegacyConnection {
340
339
  return;
341
340
  }
342
341
  this.loaded = true;
343
- this.loadTimer && clearTimeout(this.loadTimer);
344
- this.loadTimer = null;
342
+ if (this.loadTimer) {
343
+ clearTimeout(this.loadTimer);
344
+ this.loadTimer = null;
345
+ }
345
346
  this.onProgress(PROGRESS.CONNECTED);
346
347
  this.firstConnect = false;
347
348
  this.acl = acl;
@@ -355,13 +356,15 @@ export class LegacyConnection {
355
356
  return;
356
357
  }
357
358
  this.loaded = true;
358
- this.loadTimer && clearTimeout(this.loadTimer);
359
- this.loadTimer = null;
359
+ if (this.loadTimer) {
360
+ clearTimeout(this.loadTimer);
361
+ this.loadTimer = null;
362
+ }
360
363
  this.onProgress(PROGRESS.CONNECTED);
361
364
  this.firstConnect = false;
362
365
  }
363
366
  this.systemConfig = systemConfig;
364
- if (this.systemConfig && this.systemConfig.common) {
367
+ if (this.systemConfig?.common) {
365
368
  this.systemLang = this.systemConfig.common.language;
366
369
  }
367
370
  else {
@@ -374,16 +377,18 @@ export class LegacyConnection {
374
377
  this.systemLang = 'en';
375
378
  }
376
379
  }
377
- this.props.onLanguage && this.props.onLanguage(this.systemLang);
380
+ this.props.onLanguage?.(this.systemLang);
378
381
  if (!this.doNotLoadAllObjects) {
379
382
  await this.getObjects();
380
383
  this.onProgress(PROGRESS.READY);
381
- this.props.onReady && this.objects && this.props.onReady(this.objects);
384
+ if (this.props.onReady && this.objects) {
385
+ this.props.onReady(this.objects);
386
+ }
382
387
  }
383
388
  else {
384
389
  this.objects = { 'system.config': systemConfig };
385
390
  this.onProgress(PROGRESS.READY);
386
- this.props.onReady && this.props.onReady(this.objects);
391
+ this.props.onReady?.(this.objects);
387
392
  }
388
393
  }
389
394
  catch (e) {
@@ -567,7 +572,9 @@ export class LegacyConnection {
567
572
  if (this.statesSubscribes[_id]) {
568
573
  if (cb) {
569
574
  const pos = this.statesSubscribes[_id].cbs.indexOf(cb);
570
- pos !== -1 && this.statesSubscribes[_id].cbs.splice(pos, 1);
575
+ if (pos !== -1) {
576
+ this.statesSubscribes[_id].cbs.splice(pos, 1);
577
+ }
571
578
  }
572
579
  else {
573
580
  this.statesSubscribes[_id].cbs = [];
@@ -745,9 +752,11 @@ export class LegacyConnection {
745
752
  else {
746
753
  sub.cbs = [];
747
754
  }
748
- if (!sub.cbs || !sub.cbs.length) {
755
+ if (!sub.cbs?.length) {
749
756
  delete this.filesSubscribes[key];
750
- this.connected && toUnsubscribe.push(pattern);
757
+ if (this.connected) {
758
+ toUnsubscribe.push(pattern);
759
+ }
751
760
  }
752
761
  }
753
762
  }
@@ -1117,7 +1126,7 @@ export class LegacyConnection {
1117
1126
  update = adapter;
1118
1127
  adapter = '';
1119
1128
  }
1120
- adapter = adapter || '';
1129
+ adapter ||= '';
1121
1130
  if (!update && this._promises[`instances_${adapter}`] instanceof Promise) {
1122
1131
  return this._promises[`instances_${adapter}`];
1123
1132
  }
@@ -1143,7 +1152,7 @@ export class LegacyConnection {
1143
1152
  update = adapter;
1144
1153
  adapter = '';
1145
1154
  }
1146
- adapter = adapter || '';
1155
+ adapter ||= '';
1147
1156
  if (!update && this._promises[`adapter_${adapter}`] instanceof Promise) {
1148
1157
  return this._promises[`adapter_${adapter}`];
1149
1158
  }
@@ -1161,8 +1170,8 @@ export class LegacyConnection {
1161
1170
  * Called internally.
1162
1171
  */
1163
1172
  _renameGroups(objs, cb) {
1164
- if (!objs || !objs.length) {
1165
- cb && cb(null);
1173
+ if (!objs?.length) {
1174
+ cb?.(null);
1166
1175
  }
1167
1176
  else {
1168
1177
  const obj = objs.pop();
@@ -1176,7 +1185,7 @@ export class LegacyConnection {
1176
1185
  this.setObject(obj._id, obj)
1177
1186
  .then(() => this.delObject(oldId))
1178
1187
  .then(() => setTimeout(() => this._renameGroups(objs, cb), 0))
1179
- .catch((err) => cb && cb(err));
1188
+ .catch((err) => cb?.(err));
1180
1189
  }
1181
1190
  }
1182
1191
  /**
@@ -1204,7 +1213,7 @@ export class LegacyConnection {
1204
1213
  if (obj) {
1205
1214
  obj._id = newId;
1206
1215
  if (newName !== undefined) {
1207
- obj.common = obj.common || {};
1216
+ obj.common ||= {};
1208
1217
  obj.common.name = newName;
1209
1218
  }
1210
1219
  return this.setObject(obj._id, obj).then(() => this.delObject(id));
@@ -1409,8 +1418,8 @@ export class LegacyConnection {
1409
1418
  if (!this.connected) {
1410
1419
  return Promise.reject(new Error(NOT_CONNECTED));
1411
1420
  }
1412
- start = start || '';
1413
- end = end || '\u9999';
1421
+ start ||= '';
1422
+ end ||= '\u9999';
1414
1423
  return this.getObjectViewCustom('system', type, start, end);
1415
1424
  }
1416
1425
  /**
@@ -2127,8 +2136,8 @@ export class LegacyConnection {
2127
2136
  }
2128
2137
  this._promises.systemConfig = this.getObject('system.config').then(obj => {
2129
2138
  const systemConfig = (obj || {});
2130
- systemConfig.common = systemConfig.common || {};
2131
- systemConfig.native = systemConfig.native || {};
2139
+ systemConfig.common ||= {};
2140
+ systemConfig.native ||= {};
2132
2141
  return systemConfig;
2133
2142
  });
2134
2143
  return this._promises.systemConfig;
@@ -2503,7 +2512,7 @@ export class LegacyConnection {
2503
2512
  return this._promises.compactAdapters;
2504
2513
  }
2505
2514
  getAdaptersResetCache(adapter) {
2506
- adapter = adapter || '';
2515
+ adapter ||= '';
2507
2516
  delete this._promises.compactAdapters;
2508
2517
  delete this._promises[`adapter_${adapter}`];
2509
2518
  }
@@ -2524,7 +2533,7 @@ export class LegacyConnection {
2524
2533
  return this._promises.compactInstances;
2525
2534
  }
2526
2535
  getAdapternInstancesResetCache(adapter) {
2527
- adapter = adapter || '';
2536
+ adapter ||= '';
2528
2537
  delete this._promises.compactInstances;
2529
2538
  delete this._promises[`instances_${adapter}`];
2530
2539
  }
@@ -2536,7 +2545,7 @@ export class LegacyConnection {
2536
2545
  if (LegacyConnection.isWeb()) {
2537
2546
  return Promise.reject(new Error('Allowed only in admin'));
2538
2547
  }
2539
- this._promises.installedCompact = this._promises.installedCompact || {};
2548
+ this._promises.installedCompact ||= {};
2540
2549
  if (!update && this._promises.installedCompact[host] instanceof Promise) {
2541
2550
  return this._promises.installedCompact[host];
2542
2551
  }
@@ -2726,7 +2735,7 @@ export class LegacyConnection {
2726
2735
  targetInstance = `system.adapter.${targetInstance}`;
2727
2736
  }
2728
2737
  // save callback
2729
- this._instanceSubscriptions[targetInstance] = this._instanceSubscriptions[targetInstance] || [];
2738
+ this._instanceSubscriptions[targetInstance] ||= [];
2730
2739
  if (!this._instanceSubscriptions[targetInstance].find(sub => sub.messageType === messageType && sub.callback === callback)) {
2731
2740
  this._instanceSubscriptions[targetInstance].push({
2732
2741
  messageType,
@@ -2788,7 +2797,9 @@ export class LegacyConnection {
2788
2797
  * Send log to ioBroker log
2789
2798
  */
2790
2799
  log(text, level) {
2791
- text && this._socket.emit('log', text, level || 'debug');
2800
+ if (text) {
2801
+ this._socket.emit('log', text, level || 'debug');
2802
+ }
2792
2803
  }
2793
2804
  /**
2794
2805
  * Logout current user