Skip to content

Commit

Permalink
fix: 馃悰 Update logic to get portfolio numbers from their names
Browse files Browse the repository at this point in the history
  • Loading branch information
prashantasdeveloper committed Jan 23, 2023
1 parent 53ce458 commit 0bfb226
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 34 deletions.
8 changes: 4 additions & 4 deletions src/utils/__tests__/internal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -971,10 +971,10 @@ describe('getPortfolioIdsByName', () => {
identityId = dsMockUtils.createMockIdentityId('someDid');
dsMockUtils.createQueryMock('portfolio', 'nameToNumber', {
multi: [
dsMockUtils.createMockU64(new BigNumber(1)),
dsMockUtils.createMockU64(new BigNumber(2)),
dsMockUtils.createMockU64(new BigNumber(1)),
dsMockUtils.createMockU64(new BigNumber(1)),
dsMockUtils.createMockOption(dsMockUtils.createMockU64(new BigNumber(1))),
dsMockUtils.createMockOption(dsMockUtils.createMockU64(new BigNumber(2))),
dsMockUtils.createMockOption(),
dsMockUtils.createMockOption(),
],
});
portfoliosMock = dsMockUtils.createQueryMock('portfolio', 'portfolios');
Expand Down
33 changes: 3 additions & 30 deletions src/utils/internal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ import {
} from '~/utils/constants';
import {
bigNumberToU32,
bigNumberToU64,
claimIssuerToMeshClaimIssuer,
identitiesToBtreeSet,
identityIdToString,
Expand Down Expand Up @@ -1109,35 +1108,9 @@ export async function getPortfolioIdsByName(
rawNames.map<[PolymeshPrimitivesIdentityId, Bytes]>(name => [rawIdentityId, name])
);

const portfolioIds = rawPortfolioNumbers.map(number => u64ToBigNumber(number));

// TODO @prashantasdeveloper remove this logic once nameToNumber returns Option<PortfolioNumber>
/**
* since nameToNumber returns 1 for non-existing portfolios, if a name maps to number 1,
* we need to check if the given name actually matches the first portfolio
*/
let firstPortfolioName: Bytes;

/*
* even though we make this call without knowing if we will need
* the result, we only await for it if necessary, so it's still
* performant
*/
const gettingFirstPortfolioName = portfolio.portfolios(
rawIdentityId,
bigNumberToU64(new BigNumber(1), context)
);

return P.map(portfolioIds, async (id, index) => {
if (id.eq(1)) {
firstPortfolioName = await gettingFirstPortfolioName;

if (!firstPortfolioName.eq(rawNames[index])) {
return null;
}
}

return id;
return rawPortfolioNumbers.map(number => {
const rawPortfolioId = number.unwrapOr(null);
return optionize(u64ToBigNumber)(rawPortfolioId);
});
}

Expand Down

0 comments on commit 0bfb226

Please sign in to comment.