search.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. export const REPLACE_SEARCH = "REPLACE_SEARCH"
  2. export const UPDATE_SEARCH = "UPDATE_SEARCH"
  3. export const UPDATE_SEARCH_PROVIDER = "UPDATE_SEARCH_PROVIDER"
  4. export const initialState = {
  5. isLoading: false,
  6. query: "",
  7. providers: []
  8. }
  9. export function replace(newState) {
  10. return {
  11. type: REPLACE_SEARCH,
  12. state: {
  13. isLoading: false,
  14. providers: newState
  15. }
  16. }
  17. }
  18. export function update(newState) {
  19. return {
  20. type: UPDATE_SEARCH,
  21. update: newState
  22. }
  23. }
  24. export function updateProvider(provider) {
  25. return {
  26. type: UPDATE_SEARCH_PROVIDER,
  27. provider: provider
  28. }
  29. }
  30. export default function participants(state = {}, action = null) {
  31. switch (action.type) {
  32. case REPLACE_SEARCH:
  33. return action.state
  34. case UPDATE_SEARCH:
  35. return Object.assign({}, state, action.update)
  36. case UPDATE_SEARCH_PROVIDER:
  37. return Object.assign({}, state, {
  38. providers: state.providers.map(provider => {
  39. if (provider.id === action.provider.id) {
  40. return action.provider
  41. } else {
  42. return provider
  43. }
  44. })
  45. })
  46. default:
  47. return state
  48. }
  49. }