Skip to content

Commit

Permalink
refactor: Use selectors for nft controller state access
Browse files Browse the repository at this point in the history
  • Loading branch information
cryptodev-2s authored and Salah-eddineS committed Jul 17, 2023
1 parent b87222e commit 5ab41d0
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 11 deletions.
20 changes: 9 additions & 11 deletions app/reducers/collectibles/index.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,33 @@
import { createSelector } from 'reselect';
import { selectChainId } from '../../selectors/networkController';
import {
selectAllNftContracts,
selectAllNfts,
} from '../../selectors/nftController';
import { compareTokenIds } from '../../util/tokens';

const addressSelector = (state) =>
state.engine.backgroundState.PreferencesController.selectedAddress;
const chainIdSelector = (state) => selectChainId(state);
const favoritesSelector = (state) => state.collectibles.favorites;

const allNftContractsSelector = (state) =>
state.engine.backgroundState.NftController.allNftContracts;
const allNftsSelector = (state) =>
state.engine.backgroundState.NftController.allNfts;

export const collectibleContractsSelector = createSelector(
addressSelector,
chainIdSelector,
allNftContractsSelector,
selectChainId,
selectAllNftContracts,
(address, chainId, allNftContracts) =>
allNftContracts[address]?.[chainId] || [],
);

export const collectiblesSelector = createSelector(
addressSelector,
chainIdSelector,
allNftsSelector,
selectChainId,
selectAllNfts,
(address, chainId, allNfts) => allNfts[address]?.[chainId] || [],
);

export const favoritesCollectiblesSelector = createSelector(
addressSelector,
chainIdSelector,
selectChainId,
favoritesSelector,
(address, chainId, favorites) => favorites[address]?.[chainId] || [],
);
Expand Down
16 changes: 16 additions & 0 deletions app/selectors/nftController.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { createSelector } from 'reselect';
import { NftState } from '@metamask/assets-controllers';
import { EngineState } from './types';

const selectNftControllerState = (state: EngineState) =>
state.engine.backgroundState.NftController;

export const selectAllNftContracts = createSelector(
selectNftControllerState,
(nftControllerState: NftState) => nftControllerState.allNftContracts,
);

export const selectAllNfts = createSelector(
selectNftControllerState,
(nftControllerState: NftState) => nftControllerState.allNfts,
);

0 comments on commit 5ab41d0

Please sign in to comment.