2018-09-10 09:55:26 -07:00
|
|
|
import { AppState } from 'store/reducers';
|
2019-02-05 12:34:19 -08:00
|
|
|
import {
|
|
|
|
Proposal,
|
|
|
|
ProposalComments,
|
|
|
|
ProposalUpdates,
|
|
|
|
ProposalContributions,
|
|
|
|
ProposalPageParams,
|
|
|
|
} from 'types';
|
2018-11-07 09:33:19 -08:00
|
|
|
|
2018-09-10 09:55:26 -07:00
|
|
|
export function getProposalComments(
|
|
|
|
state: AppState,
|
2018-12-21 10:47:50 -08:00
|
|
|
proposalId: Proposal['proposalId'],
|
2018-09-10 09:55:26 -07:00
|
|
|
): ProposalComments['comments'] | null {
|
|
|
|
const pc = state.proposal.proposalComments[proposalId];
|
|
|
|
return pc ? pc.comments : null;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getProposalCommentCount(
|
|
|
|
state: AppState,
|
2018-12-21 10:47:50 -08:00
|
|
|
proposalId: Proposal['proposalId'],
|
2018-09-10 09:55:26 -07:00
|
|
|
): ProposalComments['totalComments'] | null {
|
|
|
|
const pc = state.proposal.proposalComments[proposalId];
|
|
|
|
return pc ? pc.totalComments : null;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getIsFetchingComments(state: AppState) {
|
|
|
|
return state.proposal.isFetchingComments;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getCommentsError(state: AppState) {
|
|
|
|
return state.proposal.commentsError;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getProposalUpdates(
|
|
|
|
state: AppState,
|
2018-12-21 10:47:50 -08:00
|
|
|
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,
|
2018-12-21 10:47:50 -08:00
|
|
|
proposalId: Proposal['proposalId'],
|
2018-11-02 09:24:28 -07:00
|
|
|
): number | null {
|
2018-09-10 09:55:26 -07:00
|
|
|
const pu = state.proposal.proposalUpdates[proposalId];
|
2018-11-02 09:24:28 -07:00
|
|
|
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;
|
|
|
|
}
|
2019-02-05 12:34:19 -08:00
|
|
|
|
|
|
|
export function getProposalPageSettings(state: AppState): ProposalPageParams {
|
|
|
|
const { page, search, sort, filters } = state.proposal.page;
|
|
|
|
return {
|
|
|
|
page,
|
|
|
|
search,
|
|
|
|
sort,
|
|
|
|
filters,
|
|
|
|
};
|
|
|
|
}
|