selectors.ts
1 import { IOwnedDomainRequest, IBaseDomainRequest } from 'libs/ens'; 2 import { isCreationAddress } from 'libs/validators'; 3 import { AppState } from 'features/reducers'; 4 import { ensDomainRequestsTypes, ensDomainRequestsSelectors } from './domainRequests'; 5 import { ensDomainSelectorSelectors } from './domainSelector'; 6 7 const isOwned = (data: IBaseDomainRequest): data is IOwnedDomainRequest => { 8 return !!(data as IOwnedDomainRequest).ownerAddress; 9 }; 10 11 export const getEns = (state: AppState) => state.ens; 12 13 export const getCurrentDomainData = (state: AppState) => { 14 const currentDomain = ensDomainSelectorSelectors.getCurrentDomainName(state); 15 const domainRequests = ensDomainRequestsSelectors.getDomainRequests(state); 16 17 if (!currentDomain || !domainRequests[currentDomain] || domainRequests[currentDomain].error) { 18 return null; 19 } 20 21 const domainData = domainRequests[currentDomain].data || null; 22 23 return domainData; 24 }; 25 26 export const getResolvedAddress = (state: AppState, noGenesisAddress: boolean = false) => { 27 const data = getCurrentDomainData(state); 28 if (!data) { 29 return null; 30 } 31 32 if (isOwned(data)) { 33 const { resolvedAddress } = data; 34 if (noGenesisAddress) { 35 return !isCreationAddress(resolvedAddress) ? resolvedAddress : null; 36 } 37 return data.resolvedAddress; 38 } 39 return null; 40 }; 41 42 export const getResolvingDomain = (state: AppState) => { 43 const currentDomain = ensDomainSelectorSelectors.getCurrentDomainName(state); 44 const domainRequests = ensDomainRequestsSelectors.getDomainRequests(state); 45 46 if (!currentDomain || !domainRequests[currentDomain]) { 47 return null; 48 } 49 50 return domainRequests[currentDomain].state === ensDomainRequestsTypes.RequestStates.pending; 51 };