@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
44 lines (42 loc) • 1.35 kB
text/typescript
import { BigNumber } from "bignumber.js";
import { Account, Operation } from "@ledgerhq/types-live";
import addToSwapHistory from "./addToSwapHistory";
import { ExchangeSwap, ExchangeRate } from "./types";
import { addPendingOperation, getMainAccount } from "../../account/index";
import { Transaction } from "../../generated/types";
export const getUpdateAccountWithUpdaterParams = ({
result,
exchange,
transaction,
magnitudeAwareRate,
provider,
}: {
result: { operation: Operation; swapId: string };
exchange: ExchangeSwap;
transaction?: Transaction | null;
magnitudeAwareRate: BigNumber;
provider: string;
}): [string, (account: Account) => Account] | [] => {
const { operation, swapId } = result;
const mainAccount =
exchange.fromAccount && getMainAccount(exchange.fromAccount, exchange.fromParentAccount);
if (!mainAccount) return [];
const accountUpdater = (account: Account) => {
if (!transaction) return account;
const accountWithUpdatedHistory = addToSwapHistory({
account,
operation,
transaction,
swap: {
exchange,
exchangeRate: {
magnitudeAwareRate,
provider,
} as ExchangeRate,
},
swapId,
});
return addPendingOperation(accountWithUpdatedHistory, operation);
};
return [mainAccount.id, accountUpdater];
};