- import axios from 'axios';
- import { setSettingsToLocalStorage } from '../web_push_subscription';
-
- 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) {
- setSettingsToLocalStorage(me, data);
- }
- });
- };
- }
|