zcash-grant-system/frontend/client/modules/proposals/selectors.tsx

69 lines
1.7 KiB
TypeScript
Raw Normal View History

2018-09-10 09:55:26 -07:00
import { AppState } from 'store/reducers';
import {
Proposal,
ProposalUpdates,
ProposalContributions,
ProposalPageParams,
PageParams,
} from 'types';
2018-09-10 09:55:26 -07:00
export function getProposalUpdates(
state: AppState,
proposalId: Proposal['proposalId'],
2018-09-10 09:55:26 -07:00
): ProposalUpdates['updates'] | null {
const pu = state.proposal.proposalUpdates[proposalId];
return pu ? pu.updates : null;
}
export function getProposalUpdateCount(
state: AppState,
proposalId: Proposal['proposalId'],
): number | null {
2018-09-10 09:55:26 -07:00
const pu = state.proposal.proposalUpdates[proposalId];
return pu ? pu.updates.length : null;
2018-09-10 09:55:26 -07:00
}
export function getIsFetchingUpdates(state: AppState) {
return state.proposal.isFetchingUpdates;
}
export function getUpdatesError(state: AppState) {
return state.proposal.updatesError;
}
2019-01-09 12:48:41 -08:00
export function getProposalContributions(
state: AppState,
proposalId: Proposal['proposalId'],
): Omit<ProposalContributions, 'proposalId'> | null {
const pc = state.proposal.proposalContributions[proposalId];
return pc ? { top: pc.top, latest: pc.latest } : null;
}
export function getIsFetchingContributions(state: AppState) {
return state.proposal.isFetchingContributions;
}
export function getFetchContributionsError(state: AppState) {
return state.proposal.fetchContributionsError;
}
export function getProposalPageSettings(state: AppState): ProposalPageParams {
const { page, search, sort, filters } = state.proposal.page;
return {
page,
search,
sort,
filters,
};
}
export function getProposalCommentPageParams(state: AppState): PageParams {
const { page, search, sort, filters } = state.proposal.detailComments;
return {
page,
search,
sort,
filters,
};
}