58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import axios from 'axios';
 | 
						|
import { pushNotificationsSetting } from '../settings';
 | 
						|
 | 
						|
export const SET_BROWSER_SUPPORT = 'PUSH_NOTIFICATIONS_SET_BROWSER_SUPPORT';
 | 
						|
export const SET_SUBSCRIPTION = 'PUSH_NOTIFICATIONS_SET_SUBSCRIPTION';
 | 
						|
export const CLEAR_SUBSCRIPTION = 'PUSH_NOTIFICATIONS_CLEAR_SUBSCRIPTION';
 | 
						|
export const ALERTS_CHANGE = 'PUSH_NOTIFICATIONS_ALERTS_CHANGE';
 | 
						|
 | 
						|
export function setBrowserSupport (value) {
 | 
						|
  return {
 | 
						|
    type: SET_BROWSER_SUPPORT,
 | 
						|
    value,
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
export function setSubscription (subscription) {
 | 
						|
  return {
 | 
						|
    type: SET_SUBSCRIPTION,
 | 
						|
    subscription,
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
export function clearSubscription () {
 | 
						|
  return {
 | 
						|
    type: CLEAR_SUBSCRIPTION,
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
export function changeAlerts(key, value) {
 | 
						|
  return dispatch => {
 | 
						|
    dispatch({
 | 
						|
      type: ALERTS_CHANGE,
 | 
						|
      key,
 | 
						|
      value,
 | 
						|
    });
 | 
						|
 | 
						|
    dispatch(saveSettings());
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
export function saveSettings() {
 | 
						|
  return (_, getState) => {
 | 
						|
    const state = getState().get('push_notifications');
 | 
						|
    const subscription = state.get('subscription');
 | 
						|
    const alerts = state.get('alerts');
 | 
						|
    const data = { alerts };
 | 
						|
 | 
						|
    axios.put(`/api/web/push_subscriptions/${subscription.get('id')}`, {
 | 
						|
      data,
 | 
						|
    }).then(() => {
 | 
						|
      const me = getState().getIn(['meta', 'me']);
 | 
						|
      if (me) {
 | 
						|
        pushNotificationsSetting.set(me, data);
 | 
						|
      }
 | 
						|
    });
 | 
						|
  };
 | 
						|
}
 |