forked from LedgerHQ/ledger-live-desktop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
libcoreSignAndBroadcast.js
49 lines (44 loc) · 1.2 KB
/
libcoreSignAndBroadcast.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// @flow
import { map } from 'rxjs/operators'
import {
toOperationRaw,
fromAccountRaw,
fromTokenAccountRaw,
} from '@ledgerhq/live-common/lib/account'
import signAndBroadcast from '@ledgerhq/live-common/lib/libcore/signAndBroadcast'
import type {
Transaction,
AccountRaw,
TokenAccountRaw,
OperationRaw,
} from '@ledgerhq/live-common/lib/types'
import { createCommand, Command } from 'helpers/ipc'
type Input = {
account: AccountRaw,
tokenAccount?: ?TokenAccountRaw,
transaction: Transaction,
deviceId: string,
}
type Result =
| { type: 'signing' }
| { type: 'signed' }
| { type: 'broadcasted', operation: OperationRaw }
const cmd: Command<Input, Result> = createCommand('libcoreSignAndBroadcast', input =>
signAndBroadcast({
account: fromAccountRaw(input.account),
tokenAccount: input.tokenAccount && fromTokenAccountRaw(input.tokenAccount),
transaction: input.transaction,
deviceId: input.deviceId,
}).pipe(
map(
(e: *): Result => {
if (e.type === 'broadcasted') {
const operation: OperationRaw = toOperationRaw(e.operation)
return { type: 'broadcasted', operation }
}
return e
},
),
),
)
export default cmd