@enjin-protos/snap
Version:
MetaMask snap for interacting with Enjin dApps
36 lines (29 loc) • 1.07 kB
text/typescript
import type { ApiPromise } from '@polkadot/api';
import type { Transaction, TxPayload } from '@enjin-protos/metamask-enjin-types';
import { saveTxToState } from '../polkadot/tx';
import { getAddress } from './getAddress';
export async function send(
api: ApiPromise,
signature: Uint8Array | `0x${string}`,
txPayload: TxPayload
): Promise<Transaction> {
const sender = await getAddress();
const destination = txPayload.payload.address;
const extrinsic = api.createType('Extrinsic', txPayload.tx);
extrinsic.addSignature(sender, signature, txPayload.payload);
const amount = extrinsic.args[1].toJSON();
const paymentInfo = await api.tx.balances
.transferKeepAlive(destination, String(amount))
.paymentInfo(sender);
const txHash = await api.rpc.author.submitExtrinsic(extrinsic);
const tx = {
amount: amount,
block: txHash.toHex(),
destination: destination,
fee: String(paymentInfo.partialFee.toJSON()),
hash: extrinsic.hash.toHex(),
sender: sender
} as Transaction;
await saveTxToState(tx);
return tx;
}