window.deviceList = null;
window.trezorClient = {
init: function () {
document.getElementById("trezor-loading").style.display = "block";
window.trezorDeviceList = new trezor.DeviceList({
config: window.trezorConfig || null,
debug: true,
transport: new trezorLink.Lowlevel(new trezorLink.WebUsb(), function () {
return null;
})
});
trezorDeviceList.on("connect", trezorClient.onDeviceConnected);
trezorDeviceList.on("connectUnacquired", function(e){
e.steal.then(trezorClient.onDeviceConnected);
});
trezorDeviceList.on("transport", function(){
if (trezorDeviceList.asArray().length < 1 || trezorDeviceList.requestNeeded) {
if (!navigator.usb) {
document.getElementById("trezor-loading").style.display = "none";
document.getElementById("trezor-error").style.display = "block";
document.getElementById("trezor-error").innerHTML = 'Your browser does not support WebUsb. Please switch to a supported browser or request Trezor to implement this feature.';
return;
}
trezorClient.requestDevice();
}
});
},
requestDevice: function () {
return trezorDeviceList.requestDevice().catch(function () {
document.getElementById("trezor-loading").style.display = "none";
document.getElementById("trezor-error").style.display = "block";
document.getElementById("trezor-error").innerText = 'Device could not be acquired. Do you have another app using the device?';
})
},
onDeviceConnected: function (device) {
window.trezorDevice = null;
document.getElementById("trezor-error").style.display = "none";
document.getElementById("trezor-error").innerText = 'Device could not be used.';
device.on('disconnect', function () {
window.trezorDevice = null;
document.getElementById("trezor-error").style.display = "block";
document.getElementById("trezor-error").innerText = 'Device was disconnected';
document.getElementById("trezor-loading").style.display = "block";
document.getElementById("trezor-success").style.display = "none";
if (window.onTrezorDeviceLost) {
window.onTrezorDeviceLost();
}
});
if (device.isBootloader()) {
document.getElementById("trezor-error").style.display = "block";
document.getElementById("trezor-error").innerText = 'Device is in Bootloader, please reconnect it.';
return;
}
if (!device.isInitialized()) {
document.getElementById("trezor-error").style.display = "block";
document.getElementById("trezor-error").innerText = 'Device is not yet setup.';
return;
}
document.getElementById("trezor-loading").style.display = "none";
document.getElementById("trezor-success").style.display = "block";
window.trezorDevice = device;
if (window.onTrezorDeviceFound) {
document.getElementById("trezor-devicename").innerText = device.features.label;
window.onTrezorDeviceFound(device);
}
}
};