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);
 | |
|       }
 | |
|     });
 | |
|   };
 | |
| }
 |