Fix 'Timed out waiting for device' error

Summary:
It looks like this timeout was firing every time, causing a misleading error.
Fixing by clearing it when the match is found.

Reviewed By: passy

Differential Revision: D19602640

fbshipit-source-id: b5d97e71a02a014b9498dd56371c1a48f8ae08eb
This commit is contained in:
John Knox
2020-01-28 11:26:30 -08:00
committed by Facebook Github Bot
parent 40ac443386
commit 060e8c0e93

View File

@@ -202,6 +202,8 @@ export default class Client extends EventEmitter {
}
reportPlatformFailures(
new Promise<BaseDevice>((resolve, reject) => {
let unsubscribe: () => void = () => {};
const device = this.store
.getState()
.connections.devices.find(
@@ -212,7 +214,13 @@ export default class Client extends EventEmitter {
return;
}
const unsubscribe = this.store.subscribe(() => {
const timeout = setTimeout(() => {
unsubscribe();
const error = `Timed out waiting for device for client ${this.id}`;
console.error(error);
reject(error);
}, 5000);
unsubscribe = this.store.subscribe(() => {
const newDeviceList = this.store.getState().connections.devices;
if (newDeviceList === this.lastSeenDeviceList) {
return;
@@ -222,16 +230,11 @@ export default class Client extends EventEmitter {
device => device.serial === this.query.device_id,
);
if (matchingDevice) {
clearTimeout(timeout);
resolve(matchingDevice);
unsubscribe();
}
});
setTimeout(() => {
unsubscribe();
const error = `Timed out waiting for device for client ${this.id}`;
console.error(error);
reject(error);
}, 5000);
}),
'client-setMatchingDevice',
).then(device => {