Skip to content

Commit 16c0a35

Browse files
feat(extension): [LW-10378] implement fuzzy search
* feat(extension): implement fuzzy search in fetch stake pool slice and utils * test(extension): fix broken smoke test * feat(extension): make sort optional * test(extension): update test LW-8448 * test(extension): update LW-8448 to match recent changes * fix(extension): fix sonarcloud issues --------- Co-authored-by: wklos-iohk <wojciech.klos@iohk.io>
1 parent 9009900 commit 16c0a35

File tree

19 files changed

+247
-308
lines changed

19 files changed

+247
-308
lines changed

apps/browser-extension-wallet/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@
3939
},
4040
"dependencies": {
4141
"@ant-design/icons": "^4.7.0",
42-
"@cardano-sdk/cardano-services-client": "0.19.2",
43-
"@cardano-sdk/core": "0.30.2",
44-
"@cardano-sdk/dapp-connector": "0.12.16",
45-
"@cardano-sdk/input-selection": "0.12.29",
46-
"@cardano-sdk/tx-construction": "0.18.5",
42+
"@cardano-sdk/cardano-services-client": "0.19.3",
43+
"@cardano-sdk/core": "0.31.0",
44+
"@cardano-sdk/dapp-connector": "0.12.17",
45+
"@cardano-sdk/input-selection": "0.12.30",
46+
"@cardano-sdk/tx-construction": "0.18.6",
4747
"@cardano-sdk/util": "0.15.1",
48-
"@cardano-sdk/wallet": "0.37.3",
49-
"@cardano-sdk/web-extension": "0.27.3",
48+
"@cardano-sdk/wallet": "0.37.4",
49+
"@cardano-sdk/web-extension": "0.27.4",
5050
"@emurgo/cip14-js": "~3.0.1",
5151
"@lace/cardano": "0.1.0",
5252
"@lace/common": "0.1.0",

apps/browser-extension-wallet/src/stores/slices/stake-pool-search-slice.ts

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,41 @@ import { BlockchainProviderSlice, SliceCreator, StakePoolSearchSlice, StateStatu
55

66
const defaultFetchLimit = 100;
77

8+
export const getQueryStakePoolsFilters = ({
9+
searchString,
10+
skip = 0,
11+
limit = defaultFetchLimit,
12+
sort
13+
}: Parameters<StakePoolSearchSlice['fetchStakePools']>[0]): Wallet.QueryStakePoolsArgs => {
14+
let filtersValues: Wallet.QueryStakePoolsArgs['filters'] = {};
15+
try {
16+
const poolId: Wallet.Cardano.PoolId = Wallet.Cardano.PoolId(searchString);
17+
filtersValues = {
18+
identifier: {
19+
values: [{ id: poolId }]
20+
}
21+
};
22+
} catch {
23+
filtersValues = { text: searchString };
24+
}
25+
return {
26+
filters: {
27+
...filtersValues,
28+
pledgeMet: true,
29+
status: [
30+
Wallet.Cardano.StakePoolStatus.Active,
31+
Wallet.Cardano.StakePoolStatus.Activating,
32+
Wallet.Cardano.StakePoolStatus.Retiring
33+
]
34+
},
35+
pagination: {
36+
startAt: skip,
37+
limit: limit - skip + 1
38+
},
39+
...(sort && { sort })
40+
};
41+
};
42+
843
const fetchStakePools =
944
({
1045
set,
@@ -18,34 +53,8 @@ const fetchStakePools =
1853
} = get().stakePoolSearchResults || {};
1954
set({ stakePoolSearchResultsStatus: StateStatus.LOADING });
2055

21-
let filtersValues = [];
22-
try {
23-
const poolId: Wallet.Cardano.PoolId = Wallet.Cardano.PoolId(searchString);
24-
filtersValues = [{ id: poolId }];
25-
} catch {
26-
filtersValues = [{ name: searchString }, { ticker: searchString }];
27-
}
28-
const filters: Wallet.QueryStakePoolsArgs = {
29-
filters: {
30-
...(searchString && {
31-
identifier: {
32-
_condition: 'or',
33-
values: filtersValues
34-
}
35-
}),
36-
pledgeMet: true,
37-
status: [
38-
Wallet.Cardano.StakePoolStatus.Active,
39-
Wallet.Cardano.StakePoolStatus.Activating,
40-
Wallet.Cardano.StakePoolStatus.Retiring
41-
]
42-
},
43-
pagination: {
44-
startAt: skip,
45-
limit: limit - skip + 1
46-
},
47-
sort
48-
};
56+
const filters = getQueryStakePoolsFilters({ searchString, skip, limit, sort });
57+
4958
const { totalResultCount, pageResults } = await get().blockchainProvider.stakePoolProvider.queryStakePools(filters);
5059

5160
const paginating = isEqual(prevSort, sort) && prevTotalCount === totalResultCount;

apps/browser-extension-wallet/src/views/browser-view/features/staking/utils.ts

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Wallet } from '@lace/cardano';
2+
import { getQueryStakePoolsFilters } from '@src/stores/slices';
23

34
export const fetchPoolsInfo = async ({
45
searchString = '',
@@ -7,26 +8,8 @@ export const fetchPoolsInfo = async ({
78
searchString: string;
89
stakePoolProvider: Wallet.StakePoolProvider;
910
}): Promise<Wallet.StakePoolSearchResults['pageResults']> => {
10-
const filters: Wallet.QueryStakePoolsArgs = {
11-
filters: {
12-
...(searchString && {
13-
identifier: {
14-
_condition: 'or',
15-
values: [{ name: searchString }, { ticker: searchString }, { id: Wallet.Cardano.PoolId(searchString) }]
16-
}
17-
}),
18-
pledgeMet: true,
19-
status: [
20-
Wallet.Cardano.StakePoolStatus.Active,
21-
Wallet.Cardano.StakePoolStatus.Activating,
22-
Wallet.Cardano.StakePoolStatus.Retiring
23-
]
24-
},
25-
pagination: {
26-
startAt: 0,
27-
limit: 100
28-
}
29-
};
11+
const filters = getQueryStakePoolsFilters({ searchString });
12+
3013
const { pageResults: pools } = await stakePoolProvider.queryStakePools(filters);
3114

3215
return pools;

packages/cardano/package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,15 @@
3838
"watch": "yarn build --watch"
3939
},
4040
"dependencies": {
41-
"@cardano-sdk/cardano-services-client": "0.19.2",
42-
"@cardano-sdk/core": "0.30.2",
41+
"@cardano-sdk/cardano-services-client": "0.19.3",
42+
"@cardano-sdk/core": "0.31.0",
4343
"@cardano-sdk/crypto": "0.1.23",
44-
"@cardano-sdk/hardware-ledger": "0.9.3",
45-
"@cardano-sdk/hardware-trezor": "0.4.23",
46-
"@cardano-sdk/key-management": "0.20.3",
44+
"@cardano-sdk/hardware-ledger": "0.9.4",
45+
"@cardano-sdk/hardware-trezor": "0.4.24",
46+
"@cardano-sdk/key-management": "0.20.4",
4747
"@cardano-sdk/util": "0.15.1",
48-
"@cardano-sdk/wallet": "0.37.3",
49-
"@cardano-sdk/web-extension": "0.27.3",
48+
"@cardano-sdk/wallet": "0.37.4",
49+
"@cardano-sdk/web-extension": "0.27.4",
5050
"@lace/common": "0.1.0",
5151
"@ledgerhq/devices": "^8.2.1",
5252
"@stablelib/chacha20poly1305": "1.0.1",
@@ -68,7 +68,7 @@
6868
"webextension-polyfill": "0.8.0"
6969
},
7070
"devDependencies": {
71-
"@cardano-sdk/util-dev": "0.20.2",
71+
"@cardano-sdk/util-dev": "0.20.3",
7272
"@emurgo/cardano-message-signing-browser": "1.0.1",
7373
"rollup-plugin-polyfill-node": "^0.8.0",
7474
"typescript": "^4.9.5"

packages/e2e-tests/src/assert/multidelegation/MultidelegationPageAssert.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ class MultidelegationPageAssert {
2525
expect(poolsCounter).to.equal(poolsCount);
2626
};
2727

28-
assertSeeSearchResultsCountExact = async (items: number) => {
29-
await browser.waitUntil(async () => (await MultidelegationPage.displayedPools.length) === items, {
28+
assertSeeSearchResultsCountGreaterOrEqual = async (expectedPoolsCount: number) => {
29+
await browser.waitUntil(async () => (await MultidelegationPage.displayedPools.length) >= expectedPoolsCount, {
3030
timeout: 20_000,
31-
timeoutMsg: `Search result does not match exact items count expected: ${items}`
31+
timeoutMsg: `There should be ${expectedPoolsCount} or more stake pools returned`
3232
});
3333
};
3434

packages/e2e-tests/src/elements/multidelegation/MultidelegationPage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ class MultidelegationPage {
376376
});
377377
for (const ticker of poolsToMark) {
378378
await this.fillSearch(ticker);
379-
await MultidelegationPageAssert.assertSeeSearchResultsCountExact(1);
379+
await MultidelegationPageAssert.assertSeeSearchResultsCountGreaterOrEqual(1);
380380
await this.markStakePoolWithTicker(ticker);
381381
await this.stakingPageSearchInput.click();
382382
await clearInputFieldValue(await this.stakingPageSearchInput);

packages/e2e-tests/src/features/MultiDelegationPageExtended.part1.feature

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Feature: Staking Page - Extended View
2727
And I switch to list view on "Browse pools" tab
2828
Then I see the stake pool search control with appropriate content
2929

30+
# TODO: update to match LW-10410 when ready
3031
@LW-8448 @Testnet
3132
Scenario Outline: Extended View - Stake pool search for "<stake_pool_search_term>" returns the expected number of results <number_of_results> with appropriate content
3233
When I navigate to Staking extended page
@@ -37,14 +38,14 @@ Feature: Staking Page - Extended View
3738
And (if applicable) first stake pool search result has "<stake_pool_ticker>" ticker
3839
Examples:
3940
| stake_pool_search_term | number_of_results | stake_pool_ticker |
40-
| a Ocean | 1 | OCEAN |
41-
| a ocean | 1 | OCEAN |
42-
| NED# | 0 | |
43-
| PAN | 1 | PANL |
41+
| a Ocean | 3 | OCEAN |
42+
| a ocean | 3 | OCEAN |
43+
| ABC# | 0 | |
44+
| HUA | 1 | HUADA |
4445
| 123456 | 0 | |
45-
| WO | 2 | WOOF |
46+
| ZZZ | 2 | ZZZZX |
4647
| £££ | 0 | |
47-
| Amso | 0 | |
48+
| Abcde | 0 | |
4849

4950
@LW-8448 @Mainnet
5051
Scenario Outline: Extended View - Stake pool search for "<stake_pool_search_term>" returns the expected number of results <number_of_results> with appropriate content

packages/staking/package.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,12 @@
7373
},
7474
"devDependencies": {
7575
"@babel/core": "^7.21.0",
76-
"@cardano-sdk/core": "0.30.2",
77-
"@cardano-sdk/input-selection": "0.12.29",
78-
"@cardano-sdk/tx-construction": "0.18.5",
76+
"@cardano-sdk/core": "0.31.0",
77+
"@cardano-sdk/input-selection": "0.12.30",
78+
"@cardano-sdk/tx-construction": "0.18.6",
7979
"@cardano-sdk/util": "0.15.1",
80-
"@cardano-sdk/wallet": "0.37.3",
81-
"@cardano-sdk/web-extension": "0.27.3",
80+
"@cardano-sdk/wallet": "0.37.4",
81+
"@cardano-sdk/web-extension": "0.27.4",
8282
"@storybook/addon-actions": "^7.6.7",
8383
"@storybook/addon-essentials": "^7.6.7",
8484
"@storybook/addon-interactions": "^7.6.7",
@@ -123,11 +123,11 @@
123123
"wait-on": "^7.0.1"
124124
},
125125
"peerDependencies": {
126-
"@cardano-sdk/input-selection": "0.12.29",
127-
"@cardano-sdk/tx-construction": "0.18.5",
126+
"@cardano-sdk/input-selection": "0.12.30",
127+
"@cardano-sdk/tx-construction": "0.18.6",
128128
"@cardano-sdk/util": "0.15.1",
129-
"@cardano-sdk/wallet": "0.37.3",
130-
"@cardano-sdk/web-extension": "0.27.3",
129+
"@cardano-sdk/wallet": "0.37.4",
130+
"@cardano-sdk/web-extension": "0.27.4",
131131
"@lace/cardano": "^0.1.0",
132132
"@lace/common": "^0.1.0",
133133
"@lace/core": "0.1.0",

packages/staking/src/features/BrowsePools/BrowsePools.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export const BrowsePools = () => {
4949
showSkeleton={fetching}
5050
loadMoreData={paginatePools}
5151
scrollableTargetId={LACE_APP_ID}
52-
sortField={sort.field}
52+
sortField={sort?.field}
5353
/>
5454
) : (
5555
<StakePoolsList

0 commit comments

Comments
 (0)