-
-
Notifications
You must be signed in to change notification settings - Fork 197
/
Copy pathios-device-discovery.ts
61 lines (55 loc) · 1.64 KB
/
ios-device-discovery.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import { DeviceDiscovery } from "./device-discovery";
import { IOSDevice } from "../ios/device/ios-device";
import { IInjector } from "../../definitions/yok";
import { injector } from "../../yok";
export class IOSDeviceDiscovery extends DeviceDiscovery {
constructor(
private $injector: IInjector,
private $logger: ILogger,
private $mobileHelper: Mobile.IMobileHelper,
private $iosDeviceOperations: IIOSDeviceOperations
) {
super();
}
public async startLookingForDevices(
options?: Mobile.IDeviceLookingOptions
): Promise<void> {
this.$logger.trace("Options for ios-device-discovery", options);
if (
options &&
options.platform &&
(!this.$mobileHelper.isiOSPlatform(options.platform) || options.emulator)
) {
return;
}
await this.$iosDeviceOperations.startLookingForDevices(
(deviceInfo: IOSDeviceLib.IDeviceActionInfo) => {
const device = this.createDevice(deviceInfo);
this.addDevice(device);
},
(deviceInfo: IOSDeviceLib.IDeviceActionInfo) => {
const currentDevice = this.getDevice(deviceInfo.deviceId);
if (currentDevice) {
const device = this.createDevice(deviceInfo);
this.updateDeviceInfo(device);
} else {
const device = this.createDevice(deviceInfo);
this.addDevice(device);
}
},
(deviceInfo: IOSDeviceLib.IDeviceActionInfo) => {
this.removeDevice(deviceInfo.deviceId);
},
options
);
}
private createDevice(
deviceActionInfo: IOSDeviceLib.IDeviceActionInfo
): IOSDevice {
const device = this.$injector.resolve(IOSDevice, {
deviceActionInfo: deviceActionInfo,
});
return device;
}
}
injector.register("iOSDeviceDiscovery", IOSDeviceDiscovery);