pleroma/packages/pl-fe/src/reducers/polls.ts
marcin mikołajczak 966b04fdf0 Call it pl-fe internally
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2024-08-28 13:41:08 +02:00

27 lines
775 B
TypeScript

import { Map as ImmutableMap } from 'immutable';
import { POLLS_IMPORT } from 'pl-fe/actions/importer';
import { normalizePoll } from 'pl-fe/normalizers';
import type { Status } from 'pl-api';
import type { AnyAction } from 'redux';
type State = ImmutableMap<string, ReturnType<typeof normalizePoll>>;
const importPolls = (state: State, polls: Array<Exclude<Status['poll'], null>>) =>
state.withMutations(map =>
polls.forEach(poll => map.set(poll.id, normalizePoll(poll))),
);
const initialState: State = ImmutableMap();
const polls = (state: State = initialState, action: AnyAction): State => {
switch (action.type) {
case POLLS_IMPORT:
return importPolls(state, action.polls);
default:
return state;
}
};
export { polls as default };