The code powering m.abunchtell.com https://m.abunchtell.com
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 

54 rindas
1.5 KiB

  1. import { STORE_HYDRATE } from '../actions/store';
  2. import { SET_BROWSER_SUPPORT, SET_SUBSCRIPTION, CLEAR_SUBSCRIPTION, SET_ALERTS } from '../actions/push_notifications';
  3. import Immutable from 'immutable';
  4. const initialState = Immutable.Map({
  5. subscription: null,
  6. alerts: new Immutable.Map({
  7. follow: false,
  8. follow_request: false,
  9. favourite: false,
  10. reblog: false,
  11. mention: false,
  12. poll: false,
  13. }),
  14. isSubscribed: false,
  15. browserSupport: false,
  16. });
  17. export default function push_subscriptions(state = initialState, action) {
  18. switch(action.type) {
  19. case STORE_HYDRATE: {
  20. const push_subscription = action.state.get('push_subscription');
  21. if (push_subscription) {
  22. return state
  23. .set('subscription', new Immutable.Map({
  24. id: push_subscription.get('id'),
  25. endpoint: push_subscription.get('endpoint'),
  26. }))
  27. .set('alerts', push_subscription.get('alerts') || initialState.get('alerts'))
  28. .set('isSubscribed', true);
  29. }
  30. return state;
  31. }
  32. case SET_SUBSCRIPTION:
  33. return state
  34. .set('subscription', new Immutable.Map({
  35. id: action.subscription.id,
  36. endpoint: action.subscription.endpoint,
  37. }))
  38. .set('alerts', new Immutable.Map(action.subscription.alerts))
  39. .set('isSubscribed', true);
  40. case SET_BROWSER_SUPPORT:
  41. return state.set('browserSupport', action.value);
  42. case CLEAR_SUBSCRIPTION:
  43. return initialState;
  44. case SET_ALERTS:
  45. return state.setIn(action.path, action.value);
  46. default:
  47. return state;
  48. }
  49. };