server.js 2.4 KB

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