search.js (1272B)
- import {
- SEARCH_CHANGE,
- SEARCH_CLEAR,
- SEARCH_FETCH_SUCCESS,
- SEARCH_SHOW,
- } from '../actions/search';
- import {
- COMPOSE_MENTION,
- COMPOSE_REPLY,
- COMPOSE_DIRECT,
- } from '../actions/compose';
- import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
- const initialState = ImmutableMap({
- value: '',
- submitted: false,
- hidden: false,
- results: ImmutableMap(),
- });
- export default function search(state = initialState, action) {
- switch(action.type) {
- case SEARCH_CHANGE:
- return state.set('value', action.value);
- case SEARCH_CLEAR:
- return state.withMutations(map => {
- map.set('value', '');
- map.set('results', ImmutableMap());
- map.set('submitted', false);
- map.set('hidden', false);
- });
- case SEARCH_SHOW:
- return state.set('hidden', false);
- case COMPOSE_REPLY:
- case COMPOSE_MENTION:
- case COMPOSE_DIRECT:
- return state.set('hidden', true);
- case SEARCH_FETCH_SUCCESS:
- return state.set('results', ImmutableMap({
- accounts: ImmutableList(action.results.accounts.map(item => item.id)),
- statuses: ImmutableList(action.results.statuses.map(item => item.id)),
- hashtags: ImmutableList(action.results.hashtags),
- })).set('submitted', true);
- default:
- return state;
- }
- };