incyclist-services 1.2.0 → 1.2.1
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.
|
@@ -27,7 +27,6 @@ export declare class DeviceConfigurationService extends EventEmitter {
|
|
|
27
27
|
protected logError(err: Error, fn: string): void;
|
|
28
28
|
init(): Promise<void>;
|
|
29
29
|
setFeature(name: string, enabled: boolean): void;
|
|
30
|
-
protected isNewUi(): boolean;
|
|
31
30
|
protected verifyCapabilityExists(capability: any): void;
|
|
32
31
|
protected verifyCapabilitySettings(): void;
|
|
33
32
|
protected initCapabilties(): void;
|
|
@@ -106,9 +106,6 @@ class DeviceConfigurationService extends events_1.default {
|
|
|
106
106
|
setFeature(name, enabled) {
|
|
107
107
|
this.features[name] = enabled;
|
|
108
108
|
}
|
|
109
|
-
isNewUi() {
|
|
110
|
-
return this.features['NEW_UI'] === true;
|
|
111
|
-
}
|
|
112
109
|
verifyCapabilityExists(capability) {
|
|
113
110
|
const { capabilities } = this.settings;
|
|
114
111
|
const found = capabilities.find(c => c.capability === capability);
|
|
@@ -117,74 +114,20 @@ class DeviceConfigurationService extends events_1.default {
|
|
|
117
114
|
}
|
|
118
115
|
}
|
|
119
116
|
verifyCapabilitySettings() {
|
|
120
|
-
var _a;
|
|
121
117
|
const { capabilities } = this.settings;
|
|
122
|
-
const isNewUi = this.isNewUi();
|
|
123
118
|
const bikeCapIdx = capabilities.findIndex(c => c.capability === 'bike');
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
capabilities.splice(bikeCapIdx, 1);
|
|
132
|
-
}
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
if (bikeCapIdx === -1) {
|
|
137
|
-
const control = capabilities.find(c => c.capability === incyclist_devices_1.IncyclistCapability.Control && c.selected !== undefined);
|
|
138
|
-
const bike = Object.assign({}, control);
|
|
139
|
-
bike.capability = 'bike';
|
|
140
|
-
capabilities.push(bike);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
const bikeCap = capabilities.find(c => c.capability === 'bike');
|
|
144
|
-
for (const capability of ['bike', incyclist_devices_1.IncyclistCapability.Control]) {
|
|
145
|
-
const info = capabilities.find(c => c.capability === capability);
|
|
146
|
-
if (((_a = info === null || info === void 0 ? void 0 : info.devices) === null || _a === void 0 ? void 0 : _a.length) > 0 && (info === null || info === void 0 ? void 0 : info.selected) === undefined)
|
|
147
|
-
this.select(info.devices[0], capability);
|
|
148
|
-
}
|
|
149
|
-
if (bikeCap === null || bikeCap === void 0 ? void 0 : bikeCap.selected) {
|
|
150
|
-
const bike = bikeCap.selected;
|
|
151
|
-
const power = capabilities.find(c => c.capability === incyclist_devices_1.IncyclistCapability.Power && c.selected !== undefined);
|
|
152
|
-
const control = capabilities.find(c => c.capability === incyclist_devices_1.IncyclistCapability.Control && c.selected !== undefined);
|
|
153
|
-
const speed = capabilities.find(c => c.capability === incyclist_devices_1.IncyclistCapability.Speed && c.selected !== undefined);
|
|
154
|
-
const cadence = capabilities.find(c => c.capability === incyclist_devices_1.IncyclistCapability.Cadence && c.selected !== undefined);
|
|
155
|
-
const adapter = this.getAdapter(bike);
|
|
156
|
-
let changed = false;
|
|
157
|
-
const verify = (uuid, cap) => {
|
|
158
|
-
if (!uuid && adapter.hasCapability(cap)) {
|
|
159
|
-
const setting = capabilities.find(c => c.capability === cap);
|
|
160
|
-
if (!setting) {
|
|
161
|
-
capabilities.push({ capability: cap, devices: [bike], selected: bike, disabled: false });
|
|
162
|
-
changed = true;
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
setting.selected = bike;
|
|
166
|
-
if (!setting.devices.includes(bike))
|
|
167
|
-
setting.devices.push(bike);
|
|
168
|
-
changed = true;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
verify(control, incyclist_devices_1.IncyclistCapability.Control);
|
|
173
|
-
verify(power, incyclist_devices_1.IncyclistCapability.Power);
|
|
174
|
-
verify(speed, incyclist_devices_1.IncyclistCapability.Speed);
|
|
175
|
-
verify(cadence, incyclist_devices_1.IncyclistCapability.Cadence);
|
|
176
|
-
if (changed) {
|
|
177
|
-
this.updateUserSettings();
|
|
178
|
-
this.logEvent({ message: 'capability changed after verification', capabilities });
|
|
179
|
-
}
|
|
119
|
+
this.verifyCapabilityExists(incyclist_devices_1.IncyclistCapability.Control);
|
|
120
|
+
this.verifyCapabilityExists(incyclist_devices_1.IncyclistCapability.Power);
|
|
121
|
+
this.verifyCapabilityExists(incyclist_devices_1.IncyclistCapability.HeartRate);
|
|
122
|
+
this.verifyCapabilityExists(incyclist_devices_1.IncyclistCapability.Speed);
|
|
123
|
+
this.verifyCapabilityExists(incyclist_devices_1.IncyclistCapability.Cadence);
|
|
124
|
+
if (bikeCapIdx !== -1) {
|
|
125
|
+
capabilities.splice(bikeCapIdx, 1);
|
|
180
126
|
}
|
|
127
|
+
return;
|
|
181
128
|
}
|
|
182
129
|
initCapabilties() {
|
|
183
|
-
const isNewUi = this.isNewUi();
|
|
184
130
|
const target = [incyclist_devices_1.IncyclistCapability.Control, incyclist_devices_1.IncyclistCapability.Power, incyclist_devices_1.IncyclistCapability.Cadence, incyclist_devices_1.IncyclistCapability.Speed, incyclist_devices_1.IncyclistCapability.HeartRate];
|
|
185
|
-
if (!isNewUi) {
|
|
186
|
-
target.push('bike');
|
|
187
|
-
}
|
|
188
131
|
if (!this.settings)
|
|
189
132
|
this.settings = {};
|
|
190
133
|
if (!this.settings.capabilities)
|
|
@@ -213,11 +156,7 @@ class DeviceConfigurationService extends events_1.default {
|
|
|
213
156
|
var _a, _b, _c, _d, _e;
|
|
214
157
|
const { gearSelection, connections, modeSettings = {} } = settings;
|
|
215
158
|
this.logEvent({ message: 'converting settings.json', gearSelection, connections });
|
|
216
|
-
const isNewUi = this.isNewUi();
|
|
217
159
|
const all = [incyclist_devices_1.IncyclistCapability.Control, incyclist_devices_1.IncyclistCapability.Power, incyclist_devices_1.IncyclistCapability.Cadence, incyclist_devices_1.IncyclistCapability.Speed, incyclist_devices_1.IncyclistCapability.HeartRate];
|
|
218
|
-
if (!isNewUi) {
|
|
219
|
-
all.push('bike');
|
|
220
|
-
}
|
|
221
160
|
const gears = (0, clone_1.default)(gearSelection || {});
|
|
222
161
|
const { bikes = [], hrms = [] } = gears;
|
|
223
162
|
this.settings = { interfaces: [], devices: [], capabilities: [] };
|
|
@@ -275,7 +214,7 @@ class DeviceConfigurationService extends events_1.default {
|
|
|
275
214
|
this.addToCapability(udid, cc);
|
|
276
215
|
if (isSelected) {
|
|
277
216
|
const cap = cc;
|
|
278
|
-
if (
|
|
217
|
+
if (adapter.hasCapability(cap)) {
|
|
279
218
|
const selectedDevice = capabilities.find(c => c.capability === cap);
|
|
280
219
|
selectedDevice.selected = udid;
|
|
281
220
|
}
|
|
@@ -407,8 +346,7 @@ class DeviceConfigurationService extends events_1.default {
|
|
|
407
346
|
select(udid, capability, props) {
|
|
408
347
|
var _a, _b, _c;
|
|
409
348
|
this.logEvent({ message: 'select device', udid, capability, props });
|
|
410
|
-
const
|
|
411
|
-
const { noRecursive = false, legacy = false, emit = true } = props || {};
|
|
349
|
+
const { emit = true } = props || {};
|
|
412
350
|
const deviceSettings = (_b = (_a = this.settings.devices) === null || _a === void 0 ? void 0 : _a.find(d => d.udid === udid)) === null || _b === void 0 ? void 0 : _b.settings;
|
|
413
351
|
if (!deviceSettings)
|
|
414
352
|
return;
|
|
@@ -417,62 +355,13 @@ class DeviceConfigurationService extends events_1.default {
|
|
|
417
355
|
this.logEvent({ message: 'error: could not find adapter', fn: 'select', udid, capability, adapters: (_c = Object.keys(this.adapters)) === null || _c === void 0 ? void 0 : _c.join(',') });
|
|
418
356
|
return;
|
|
419
357
|
}
|
|
420
|
-
if (
|
|
421
|
-
if (capability === 'bike')
|
|
422
|
-
return;
|
|
423
|
-
this.selectSingleDevice(udid, capability);
|
|
424
|
-
if (emit)
|
|
425
|
-
this.emitCapabiltyChanged(capability);
|
|
426
|
-
this.updateUserSettings();
|
|
427
|
-
return;
|
|
428
|
-
}
|
|
429
|
-
if ((capability === 'bike') && !adapter.isControllable())
|
|
358
|
+
if (capability === 'bike')
|
|
430
359
|
return;
|
|
431
|
-
const isControl = adapter.hasCapability(incyclist_devices_1.IncyclistCapability.Control) || (legacy && !isNewUi && capability === 'bike');
|
|
432
360
|
this.selectSingleDevice(udid, capability);
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
return;
|
|
436
|
-
if (isControl) {
|
|
437
|
-
if (capability !== 'bike' && capability !== incyclist_devices_1.IncyclistCapability.Control) {
|
|
438
|
-
if (!isNewUi)
|
|
439
|
-
this.select(udid, 'bike', { noRecursive: true, legacy });
|
|
440
|
-
this.select(udid, incyclist_devices_1.IncyclistCapability.Control, { noRecursive: true, legacy });
|
|
441
|
-
}
|
|
442
|
-
else {
|
|
443
|
-
if (!isNewUi && capability === 'bike' && isControl) {
|
|
444
|
-
this.select(udid, incyclist_devices_1.IncyclistCapability.Control, { noRecursive: true, legacy });
|
|
445
|
-
this.select(udid, incyclist_devices_1.IncyclistCapability.Power, { noRecursive: true, legacy });
|
|
446
|
-
if (legacy) {
|
|
447
|
-
this.select(udid, incyclist_devices_1.IncyclistCapability.Speed, { noRecursive: true, legacy });
|
|
448
|
-
this.select(udid, incyclist_devices_1.IncyclistCapability.Cadence, { noRecursive: true, legacy });
|
|
449
|
-
}
|
|
450
|
-
if (adapter.hasCapability(incyclist_devices_1.IncyclistCapability.HeartRate)) {
|
|
451
|
-
const hrm = this.getSelected(incyclist_devices_1.IncyclistCapability.HeartRate);
|
|
452
|
-
if (!hrm && !this.isDisabled(incyclist_devices_1.IncyclistCapability.HeartRate)) {
|
|
453
|
-
this.select(udid, incyclist_devices_1.IncyclistCapability.HeartRate);
|
|
454
|
-
}
|
|
455
|
-
else if (hrm && hrm.hasCapability(incyclist_devices_1.IncyclistCapability.Control)) {
|
|
456
|
-
this.select(udid, incyclist_devices_1.IncyclistCapability.HeartRate);
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
const otherCapabilties = this.settings.capabilities.filter(c => c.capability !== 'bike' && c.capability !== incyclist_devices_1.IncyclistCapability.Control && !c.disabled && c.selected !== udid);
|
|
461
|
-
const selectedControllable = otherCapabilties.filter(c => { var _a; return c.selected && ((_a = this.adapters[c.selected]) === null || _a === void 0 ? void 0 : _a.hasCapability(incyclist_devices_1.IncyclistCapability.Control)); });
|
|
462
|
-
selectedControllable.forEach(c => {
|
|
463
|
-
if (adapter.hasCapability(c.capability)) {
|
|
464
|
-
this.select(udid, c.capability);
|
|
465
|
-
}
|
|
466
|
-
else
|
|
467
|
-
this.unselect(c.capability);
|
|
468
|
-
});
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
else if (!isControl && !isNewUi && capability === 'bike') {
|
|
472
|
-
this.unselect(incyclist_devices_1.IncyclistCapability.Control);
|
|
473
|
-
this.select(udid, incyclist_devices_1.IncyclistCapability.Power, { noRecursive: true, legacy });
|
|
474
|
-
}
|
|
361
|
+
if (emit)
|
|
362
|
+
this.emitCapabiltyChanged(capability);
|
|
475
363
|
this.updateUserSettings();
|
|
364
|
+
return;
|
|
476
365
|
}
|
|
477
366
|
selectSingleDevice(udid, capability) {
|
|
478
367
|
var _a;
|
|
@@ -496,7 +385,6 @@ class DeviceConfigurationService extends events_1.default {
|
|
|
496
385
|
}
|
|
497
386
|
add(deviceSettings, props) {
|
|
498
387
|
var _a, _b;
|
|
499
|
-
const isNewUi = this.isNewUi();
|
|
500
388
|
let udid = this.getUdid(deviceSettings);
|
|
501
389
|
const { legacy = false } = props || {};
|
|
502
390
|
this.logEvent({ message: 'add device', udid, deviceSettings, legacy });
|
|
@@ -525,30 +413,10 @@ class DeviceConfigurationService extends events_1.default {
|
|
|
525
413
|
if (c.devices.includes(udid))
|
|
526
414
|
return udid;
|
|
527
415
|
const isBike = adapter.hasCapability(incyclist_devices_1.IncyclistCapability.Control);
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
const isHrmCap = c.capability === incyclist_devices_1.IncyclistCapability.HeartRate;
|
|
533
|
-
const canAdd = (isBikeCap && (isBike || isPower)) ||
|
|
534
|
-
(isControlCap && isBike) ||
|
|
535
|
-
(!isHrmCap && !isControlCap && (isBike || isPower)) ||
|
|
536
|
-
adapter.hasCapability(c.capability);
|
|
537
|
-
const canSelect = (isBikeCap || isControlCap || isHrmCap) &&
|
|
538
|
-
(!c.selected && !c.disabled &&
|
|
539
|
-
(isBike || isPower || c.capability === incyclist_devices_1.IncyclistCapability.HeartRate));
|
|
540
|
-
if (canAdd) {
|
|
541
|
-
c.devices.push(udid);
|
|
542
|
-
if (canSelect)
|
|
543
|
-
c.selected = udid;
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
|
-
else {
|
|
547
|
-
if (adapter.hasCapability(c.capability) || (!isNewUi && c.capability === 'bike' && (isBike || isPower))) {
|
|
548
|
-
c.devices.push(udid);
|
|
549
|
-
if (!c.selected && !c.disabled && (isBike || c.capability === incyclist_devices_1.IncyclistCapability.HeartRate))
|
|
550
|
-
c.selected = udid;
|
|
551
|
-
}
|
|
416
|
+
if (adapter.hasCapability(c.capability) && c.capability !== 'bike') {
|
|
417
|
+
c.devices.push(udid);
|
|
418
|
+
if (!c.selected && !c.disabled && (isBike || c.capability === incyclist_devices_1.IncyclistCapability.HeartRate))
|
|
419
|
+
c.selected = udid;
|
|
552
420
|
}
|
|
553
421
|
});
|
|
554
422
|
this.updateUserSettings();
|
|
@@ -611,8 +479,8 @@ class DeviceConfigurationService extends events_1.default {
|
|
|
611
479
|
}
|
|
612
480
|
}
|
|
613
481
|
addToCapability(udid, capability) {
|
|
614
|
-
|
|
615
|
-
if (
|
|
482
|
+
var _a;
|
|
483
|
+
if (capability === 'bike')
|
|
616
484
|
return;
|
|
617
485
|
if (!this.settings)
|
|
618
486
|
this.settings = {};
|
|
@@ -624,12 +492,9 @@ class DeviceConfigurationService extends events_1.default {
|
|
|
624
492
|
capabilities.push({ capability, devices: [udid], selected: udid });
|
|
625
493
|
}
|
|
626
494
|
else {
|
|
627
|
-
if (!record.devices.includes(udid))
|
|
495
|
+
if (!((_a = record.devices) === null || _a === void 0 ? void 0 : _a.includes(udid)))
|
|
628
496
|
record.devices.push(udid);
|
|
629
497
|
}
|
|
630
|
-
if (capability !== 'bike' && !this.adapters[udid].hasCapability(capability)) {
|
|
631
|
-
this.adapters[udid].addCapability(capability);
|
|
632
|
-
}
|
|
633
498
|
}
|
|
634
499
|
getUdid(deviceSettings) {
|
|
635
500
|
const udids = Object.keys(this.adapters);
|
|
@@ -661,12 +526,10 @@ class DeviceConfigurationService extends events_1.default {
|
|
|
661
526
|
this.userSettings.set('interfaces', this.settings.interfaces);
|
|
662
527
|
}
|
|
663
528
|
canStartRide() {
|
|
664
|
-
const isNewUi = this.isNewUi();
|
|
665
529
|
const { devices, capabilities } = this.settings || {};
|
|
666
530
|
if (!devices || !capabilities)
|
|
667
531
|
return false;
|
|
668
|
-
const canStart = (
|
|
669
|
-
this.getSelected(incyclist_devices_1.IncyclistCapability.Control) !== undefined ||
|
|
532
|
+
const canStart = (this.getSelected(incyclist_devices_1.IncyclistCapability.Control) !== undefined ||
|
|
670
533
|
this.getSelected(incyclist_devices_1.IncyclistCapability.Power) !== undefined ||
|
|
671
534
|
this.getSelected(incyclist_devices_1.IncyclistCapability.Speed) !== undefined);
|
|
672
535
|
return canStart;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "incyclist-services",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"gd-eventlog": "^0.1.26"
|
|
6
6
|
},
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"axios": "^1.6.1",
|
|
42
|
-
"incyclist-devices": "^2.2.
|
|
42
|
+
"incyclist-devices": "^2.2.1",
|
|
43
43
|
"promise.any": "^2.0.6",
|
|
44
44
|
"uuid": "^9.0.0",
|
|
45
45
|
"xml2js": "^0.6.2"
|