Skip to content

Commit 8a8b8b6

Browse files
committed
refactor(wallet)!: rename arrayEquals->sameArrayItems
because it does not expect the same order
1 parent bf9d185 commit 8a8b8b6

File tree

3 files changed

+14
-13
lines changed

3 files changed

+14
-13
lines changed

packages/wallet/src/services/DelegationTracker/DelegationDistributionTracker.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import {
1313
switchMap,
1414
withLatestFrom
1515
} from 'rxjs';
16-
import { arrayEquals, delegatedStakeEquals } from '../util';
1716
import { createUtxoBalanceByAddressTracker } from '../BalanceTracker';
17+
import { delegatedStakeEquals, sameArrayItems } from '../util';
1818
import _groupBy from 'lodash/groupBy';
1919
import _map from 'lodash/map';
2020

@@ -103,7 +103,7 @@ export const createDelegationDistributionTracker = ({
103103
);
104104
return delegatedStakes.map((pool, idx) => ({ ...pool, percentage: percentages[idx] }));
105105
}),
106-
distinctUntilChanged((a, b) => arrayEquals(a, b, delegatedStakeEquals)),
106+
distinctUntilChanged((a, b) => sameArrayItems(a, b, delegatedStakeEquals)),
107107
map((delegatedStakes) => new Map(delegatedStakes.map((delegation) => [delegation.pool.id, delegation])))
108108
);
109109
};

packages/wallet/src/services/util/equals.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,29 @@ import { GroupedAddress } from '@cardano-sdk/key-management';
44

55
export const strictEquals = <T>(a: T, b: T) => a === b;
66

7-
export const arrayEquals = <T>(arrayA: T[], arrayB: T[], itemEquals: (a: T, b: T) => boolean) =>
7+
export const sameArrayItems = <T>(arrayA: T[], arrayB: T[], itemEquals: (a: T, b: T) => boolean) =>
88
arrayA.length === arrayB.length && arrayA.every((a) => arrayB.some((b) => itemEquals(a, b)));
99

10-
export const shallowArrayEquals = <T>(a: T[], b: T[]) => arrayEquals(a, b, strictEquals);
10+
export const shallowArrayEquals = <T>(a: T[], b: T[]) => sameArrayItems(a, b, strictEquals);
1111

1212
export const tipEquals = (a: Cardano.Tip, b: Cardano.Tip) => a.hash === b.hash;
1313

1414
export const txEquals = (a: Cardano.HydratedTx, b: Cardano.HydratedTx) => a.id === b.id;
1515

16-
export const transactionsEquals = (a: Cardano.HydratedTx[], b: Cardano.HydratedTx[]) => arrayEquals(a, b, txEquals);
16+
export const transactionsEquals = (a: Cardano.HydratedTx[], b: Cardano.HydratedTx[]) => sameArrayItems(a, b, txEquals);
1717

1818
export const txInEquals = (a: Cardano.TxIn, b: Cardano.TxIn) => a.txId === b.txId && a.index === b.index;
1919

2020
export const utxoEquals = (a: Cardano.Utxo[], b: Cardano.Utxo[]) =>
21-
arrayEquals(a, b, ([aTxIn], [bTxIn]) => txInEquals(aTxIn, bTxIn));
21+
sameArrayItems(a, b, ([aTxIn], [bTxIn]) => txInEquals(aTxIn, bTxIn));
2222

2323
export const eraSummariesEquals = (a: EraSummary[], b: EraSummary[]) =>
24-
arrayEquals(a, b, (es1, es2) => es1.start.slot === es2.start.slot);
24+
sameArrayItems(a, b, (es1, es2) => es1.start.slot === es2.start.slot);
2525

2626
const groupedAddressEquals = (a: GroupedAddress, b: GroupedAddress) => a.address === b.address;
2727

2828
export const groupedAddressesEquals = (a: GroupedAddress[], b: GroupedAddress[]) =>
29-
arrayEquals(a, b, groupedAddressEquals);
29+
sameArrayItems(a, b, groupedAddressEquals);
3030

3131
export const epochInfoEquals = (a: EpochInfo, b: EpochInfo) => a.epochNo === b.epochNo;
3232

packages/wallet/test/services/util/equals.test.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
import { Cardano, EpochInfo, EraSummary } from '@cardano-sdk/core';
33
import {
44
DelegatedStake,
5-
arrayEquals,
65
delegatedStakeEquals,
76
epochInfoEquals,
87
eraSummariesEquals,
98
groupedAddressesEquals,
9+
sameArrayItems,
1010
shallowArrayEquals,
1111
strictEquals,
1212
tipEquals,
@@ -26,10 +26,11 @@ describe('equals', () => {
2626
expect(strictEquals('1', '1')).toBe(true);
2727
});
2828

29-
test('arrayEquals', () => {
30-
expect(arrayEquals([], [], strictEquals)).toBe(true);
31-
expect(arrayEquals(['a'], ['a', 'b'], strictEquals)).toBe(false);
32-
expect(arrayEquals(['a', 'b'], ['a', 'b'], strictEquals)).toBe(true);
29+
test('sameArrayItems', () => {
30+
expect(sameArrayItems([], [], strictEquals)).toBe(true);
31+
expect(sameArrayItems(['a'], ['a', 'b'], strictEquals)).toBe(false);
32+
expect(sameArrayItems(['a', 'b'], ['a', 'b'], strictEquals)).toBe(true);
33+
expect(sameArrayItems(['a', 'b'], ['b', 'a'], strictEquals)).toBe(true);
3334
});
3435

3536
test('shallowArrayEquals', () => {

0 commit comments

Comments
 (0)