@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
36 lines • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAppAndVersion = getAppAndVersion;
const rxjs_1 = require("rxjs");
const operators_1 = require("rxjs/operators");
const errors_1 = require("../../errors");
function getAppAndVersion(transport) {
return new rxjs_1.Observable(subscriber => {
// The device will always respond from this command: either same response than an unlocked device,
// or 0x5515 if implemented. No unresponsive strategy needed.
return (0, rxjs_1.from)(transport.send(0xb0, 0x01, 0x00, 0x00))
.pipe((0, operators_1.switchMap)(result => {
let i = 0;
const format = result[i++];
if (format !== 1) {
throw new errors_1.GetAppAndVersionUnsupportedFormat("getAppAndVersion: format not supported");
}
const nameLength = result[i++];
const name = result.slice(i, (i += nameLength)).toString("ascii");
const versionLength = result[i++];
const version = result.slice(i, (i += versionLength)).toString("ascii");
const flagLength = result[i++];
const flags = result.slice(i, (i += flagLength));
return (0, rxjs_1.of)({
type: "data",
appAndVersion: {
name,
version,
flags,
},
});
}))
.subscribe(subscriber);
});
}
//# sourceMappingURL=getAppAndVersion.js.map