refactor(wallet)!: rename arrayEquals->sameArrayItems
because it does not expect the same order
because it does not expect the same order
switchMap,
withLatestFrom
} from 'rxjs';
import { arrayEquals, delegatedStakeEquals } from '../util';
import { createUtxoBalanceByAddressTracker } from '../BalanceTracker';
import { delegatedStakeEquals, sameArrayItems } from '../util';
import _groupBy from 'lodash/groupBy';
import _map from 'lodash/map';
);
return delegatedStakes.map((pool, idx) => ({ ...pool, percentage: percentages[idx] }));
}),
distinctUntilChanged((a, b) => arrayEquals(a, b, delegatedStakeEquals)),
distinctUntilChanged((a, b) => sameArrayItems(a, b, delegatedStakeEquals)),
map((delegatedStakes) => new Map(delegatedStakes.map((delegation) => [delegation.pool.id, delegation])))
);
};
export const strictEquals = <T>(a: T, b: T) => a === b;
export const arrayEquals = <T>(arrayA: T[], arrayB: T[], itemEquals: (a: T, b: T) => boolean) =>
export const sameArrayItems = <T>(arrayA: T[], arrayB: T[], itemEquals: (a: T, b: T) => boolean) =>
arrayA.length === arrayB.length && arrayA.every((a) => arrayB.some((b) => itemEquals(a, b)));
export const shallowArrayEquals = <T>(a: T[], b: T[]) => arrayEquals(a, b, strictEquals);
export const shallowArrayEquals = <T>(a: T[], b: T[]) => sameArrayItems(a, b, strictEquals);
export const tipEquals = (a: Cardano.Tip, b: Cardano.Tip) => a.hash === b.hash;
export const txEquals = (a: Cardano.HydratedTx, b: Cardano.HydratedTx) => a.id === b.id;
export const transactionsEquals = (a: Cardano.HydratedTx[], b: Cardano.HydratedTx[]) => arrayEquals(a, b, txEquals);
export const transactionsEquals = (a: Cardano.HydratedTx[], b: Cardano.HydratedTx[]) => sameArrayItems(a, b, txEquals);
export const txInEquals = (a: Cardano.TxIn, b: Cardano.TxIn) => a.txId === b.txId && a.index === b.index;
export const utxoEquals = (a: Cardano.Utxo[], b: Cardano.Utxo[]) =>
arrayEquals(a, b, ([aTxIn], [bTxIn]) => txInEquals(aTxIn, bTxIn));
sameArrayItems(a, b, ([aTxIn], [bTxIn]) => txInEquals(aTxIn, bTxIn));
export const eraSummariesEquals = (a: EraSummary[], b: EraSummary[]) =>
arrayEquals(a, b, (es1, es2) => es1.start.slot === es2.start.slot);
sameArrayItems(a, b, (es1, es2) => es1.start.slot === es2.start.slot);
const groupedAddressEquals = (a: GroupedAddress, b: GroupedAddress) => a.address === b.address;
export const groupedAddressesEquals = (a: GroupedAddress[], b: GroupedAddress[]) =>
arrayEquals(a, b, groupedAddressEquals);
sameArrayItems(a, b, groupedAddressEquals);
export const epochInfoEquals = (a: EpochInfo, b: EpochInfo) => a.epochNo === b.epochNo;
import { Cardano, EpochInfo, EraSummary } from '@cardano-sdk/core';
import {
DelegatedStake,
arrayEquals,
delegatedStakeEquals,
epochInfoEquals,
eraSummariesEquals,
groupedAddressesEquals,
sameArrayItems,
shallowArrayEquals,
strictEquals,
tipEquals,
expect(strictEquals('1', '1')).toBe(true);
});
test('arrayEquals', () => {
expect(arrayEquals([], [], strictEquals)).toBe(true);
expect(arrayEquals(['a'], ['a', 'b'], strictEquals)).toBe(false);
expect(arrayEquals(['a', 'b'], ['a', 'b'], strictEquals)).toBe(true);
test('sameArrayItems', () => {
expect(sameArrayItems([], [], strictEquals)).toBe(true);
expect(sameArrayItems(['a'], ['a', 'b'], strictEquals)).toBe(false);
expect(sameArrayItems(['a', 'b'], ['a', 'b'], strictEquals)).toBe(true);
});
test('shallowArrayEquals', () => {
Cardano-Perf regression: UMap.size regression fix
Signed-off-by: Pat Losoponkul <[email protected]>
Co-authored-by: Alexey Kuleshevich <[email protected]>
Corresponding to [this PR](https://github.com/input-output-hk/cardano-ledger/pull/3756).
Signed-off-by: Pat Losoponkul <[email protected]>
Feat/lw 7973 cip95 sign tx
Signed-off-by: Juliano Lazzarotto <[email protected]>