52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
import { IOwnedDomainRequest, IBaseDomainRequest } from 'libs/ens';
|
|
import { isCreationAddress } from 'libs/validators';
|
|
import { AppState } from 'features/reducers';
|
|
import { ensDomainRequestsTypes, ensDomainRequestsSelectors } from './domainRequests';
|
|
import { ensDomainSelectorSelectors } from './domainSelector';
|
|
|
|
const isOwned = (data: IBaseDomainRequest): data is IOwnedDomainRequest => {
|
|
return !!(data as IOwnedDomainRequest).ownerAddress;
|
|
};
|
|
|
|
export const getEns = (state: AppState) => state.ens;
|
|
|
|
export const getCurrentDomainData = (state: AppState) => {
|
|
const currentDomain = ensDomainSelectorSelectors.getCurrentDomainName(state);
|
|
const domainRequests = ensDomainRequestsSelectors.getDomainRequests(state);
|
|
|
|
if (!currentDomain || !domainRequests[currentDomain] || domainRequests[currentDomain].error) {
|
|
return null;
|
|
}
|
|
|
|
const domainData = domainRequests[currentDomain].data || null;
|
|
|
|
return domainData;
|
|
};
|
|
|
|
export const getResolvedAddress = (state: AppState, noGenesisAddress: boolean = false) => {
|
|
const data = getCurrentDomainData(state);
|
|
if (!data) {
|
|
return null;
|
|
}
|
|
|
|
if (isOwned(data)) {
|
|
const { resolvedAddress } = data;
|
|
if (noGenesisAddress) {
|
|
return !isCreationAddress(resolvedAddress) ? resolvedAddress : null;
|
|
}
|
|
return data.resolvedAddress;
|
|
}
|
|
return null;
|
|
};
|
|
|
|
export const getResolvingDomain = (state: AppState) => {
|
|
const currentDomain = ensDomainSelectorSelectors.getCurrentDomainName(state);
|
|
const domainRequests = ensDomainRequestsSelectors.getDomainRequests(state);
|
|
|
|
if (!currentDomain || !domainRequests[currentDomain]) {
|
|
return null;
|
|
}
|
|
|
|
return domainRequests[currentDomain].state === ensDomainRequestsTypes.RequestStates.pending;
|
|
};
|