server.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import {
  2. SERVER_FETCH_REQUEST,
  3. SERVER_FETCH_SUCCESS,
  4. SERVER_FETCH_FAIL,
  5. EXTENDED_DESCRIPTION_REQUEST,
  6. EXTENDED_DESCRIPTION_SUCCESS,
  7. EXTENDED_DESCRIPTION_FAIL,
  8. SERVER_DOMAIN_BLOCKS_FETCH_REQUEST,
  9. SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS,
  10. SERVER_DOMAIN_BLOCKS_FETCH_FAIL,
  11. } from 'mastodon/actions/server';
  12. import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable';
  13. const initialState = ImmutableMap({
  14. server: ImmutableMap({
  15. isLoading: true,
  16. }),
  17. extendedDescription: ImmutableMap({
  18. isLoading: true,
  19. }),
  20. domainBlocks: ImmutableMap({
  21. isLoading: true,
  22. isAvailable: true,
  23. items: ImmutableList(),
  24. }),
  25. });
  26. export default function server(state = initialState, action) {
  27. switch (action.type) {
  28. case SERVER_FETCH_REQUEST:
  29. return state.setIn(['server', 'isLoading'], true);
  30. case SERVER_FETCH_SUCCESS:
  31. return state.set('server', fromJS(action.server)).setIn(['server', 'isLoading'], false);
  32. case SERVER_FETCH_FAIL:
  33. return state.setIn(['server', 'isLoading'], false);
  34. case EXTENDED_DESCRIPTION_REQUEST:
  35. return state.setIn(['extendedDescription', 'isLoading'], true);
  36. case EXTENDED_DESCRIPTION_SUCCESS:
  37. return state.set('extendedDescription', fromJS(action.description)).setIn(['extendedDescription', 'isLoading'], false);
  38. case EXTENDED_DESCRIPTION_FAIL:
  39. return state.setIn(['extendedDescription', 'isLoading'], false);
  40. case SERVER_DOMAIN_BLOCKS_FETCH_REQUEST:
  41. return state.setIn(['domainBlocks', 'isLoading'], true);
  42. case SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS:
  43. return state.setIn(['domainBlocks', 'items'], fromJS(action.blocks)).setIn(['domainBlocks', 'isLoading'], false).setIn(['domainBlocks', 'isAvailable'], action.isAvailable);
  44. case SERVER_DOMAIN_BLOCKS_FETCH_FAIL:
  45. return state.setIn(['domainBlocks', 'isLoading'], false);
  46. default:
  47. return state;
  48. }
  49. }