UNPKG

@ledgerhq/live-common

Version:
55 lines (48 loc) 1.49 kB
import { Observable } from "rxjs"; import URL from "url"; import Transport from "@ledgerhq/hw-transport"; import type { DeviceInfo, SocketEvent } from "@ledgerhq/types-live"; import { version as livecommonversion } from "../../../package.json"; import { getEnv } from "@ledgerhq/live-env"; import { createMockSocket, resultMock, secureChannelMock } from "../../socket/socket.mock"; import { log } from "@ledgerhq/logs"; import { createDeviceSocket } from "../../socket"; import { map } from "rxjs/operators"; export type GenuineCheckCommandRequest = { targetId: DeviceInfo["targetId"]; perso: any; // TODO: to type }; // TODO: update SocketEvent as a generic so we can type the result payload export type GenuineCheckCommandEvent = SocketEvent; export function genuineCheckCommand( transport: Transport, { targetId, perso }: GenuineCheckCommandRequest, ): Observable<GenuineCheckCommandEvent> { if (getEnv("MOCK")) { return createMockSocket(secureChannelMock(false), resultMock("0000")); } log("device-command", "genuineCheck", { targetId, perso, }); return createDeviceSocket(transport, { url: URL.format({ pathname: `${getEnv("BASE_SOCKET_URL")}/genuine`, query: { targetId, perso, livecommonversion, }, }), }).pipe( map(e => { if (e.type === "result") { return { type: "result", payload: String(e.payload || ""), }; } return e; }), ); }