extracted a method

This commit is contained in:
antelle 2020-05-06 23:12:49 +02:00
parent 53b700aa70
commit c88a7c000b
No known key found for this signature in database
GPG Key ID: 094A2F2D6136A4EE
1 changed files with 34 additions and 34 deletions

View File

@ -33,10 +33,6 @@ class YubiKeyOtpModel extends ExternalOtpDeviceModel {
};
open(callback) {
this._open(callback, true);
}
_open(callback, canRetry) {
logger.info('Listing YubiKeys');
if (UsbListener.attachedYubiKeys.length === 0) {
return callback('No YubiKeys');
@ -101,36 +97,7 @@ class YubiKeyOtpModel extends ExternalOtpDeviceModel {
logger.info('The YubiKey is probably stuck');
}
if (isStuck && canRetry && AppSettingsModel.yubiKeyOathWorkaround) {
logger.info('Repairing a stuck YubiKey');
let openTimeout;
const countYubiKeys = UsbListener.attachedYubiKeys.length;
const onDevicesChangedDuringRepair = () => {
if (UsbListener.attachedYubiKeys.length === countYubiKeys) {
logger.info('YubiKey was reconnected');
Events.off('usb-devices-changed', onDevicesChangedDuringRepair);
clearTimeout(openTimeout);
this.openAborted = false;
this._addYubiKey(serial, callback, false);
}
};
Events.on('usb-devices-changed', onDevicesChangedDuringRepair);
Launcher.spawn({
cmd: 'ykman',
args: ['-d', serial, 'config', 'usb', '-e', 'oath', '-f'],
noStdOutLogging: true,
complete: err => {
logger.info('Repair complete', err ? 'with error' : 'OK');
if (err) {
Events.off('usb-devices-changed', onDevicesChangedDuringRepair);
return callback(err);
}
openTimeout = setTimeout(() => {
Events.off('usb-devices-changed', onDevicesChangedDuringRepair);
}, Timeouts.ExternalDeviceReconnect);
}
});
this._applyYubiKeyWorkaround(serial, callback);
return;
}
if (err) {
@ -163,6 +130,39 @@ class YubiKeyOtpModel extends ExternalOtpDeviceModel {
});
}
_applyYubiKeyWorkaround(serial, callback) {
logger.info('Repairing a stuck YubiKey');
let openTimeout;
const countYubiKeys = UsbListener.attachedYubiKeys.length;
const onDevicesChangedDuringRepair = () => {
if (UsbListener.attachedYubiKeys.length === countYubiKeys) {
logger.info('YubiKey was reconnected');
Events.off('usb-devices-changed', onDevicesChangedDuringRepair);
clearTimeout(openTimeout);
this.openAborted = false;
this._addYubiKey(serial, callback, false);
}
};
Events.on('usb-devices-changed', onDevicesChangedDuringRepair);
Launcher.spawn({
cmd: 'ykman',
args: ['-d', serial, 'config', 'usb', '-e', 'oath', '-f'],
noStdOutLogging: true,
complete: err => {
logger.info('Repair complete', err ? 'with error' : 'OK');
if (err) {
Events.off('usb-devices-changed', onDevicesChangedDuringRepair);
return callback(err);
}
openTimeout = setTimeout(() => {
Events.off('usb-devices-changed', onDevicesChangedDuringRepair);
}, Timeouts.ExternalDeviceReconnect);
}
});
}
cancelOpen() {
logger.info('Cancel open');
Events.off('usb-devices-changed', this.onUsbDevicesChanged);