UNPKG

orb-ui-firebase

Version:

Firebase with redux

67 lines (58 loc) 1.67 kB
import * as types from './types'; export function onTokenChanged(token) { return { type: types.TOKEN_CHANGED, payload: { token: token, isInitialized: true } }; } export function onPermissionChanged(hasPermission, onMessage) { return { type: types.PERMISSION_CHANGED, payload: { hasPermission: hasPermission, isInitialized: true } }; } export function onMessage(message) { return { type: types.ON_MESSAGE, payload: { message: message } }; } export function clearMessage() { return { type: types.ON_CLEAR_MESSAGE }; } export function onMessagingError(error) { return { type: types.MESSAGING_ERROR, payload: { error: error } }; } export function initMessaging(firebaseApp, handleTokenChange, onMessageReceieved, onBackgroundMessageReceived) { return function (dispatch) { var messaging = firebaseApp.messaging(); try { messaging.requestPermission().then(function () { return messaging.getToken(); }).then(function (token) { if (handleTokenChange !== undefined && handleTokenChange instanceof Function) { handleTokenChange(token); } dispatch(onPermissionChanged(true)); dispatch(onTokenChanged(token)); }).catch(function (error) { dispatch(onPermissionChanged(false)); console.warn(error); }); } catch (e) { dispatch(onPermissionChanged(false)); console.warn(e); } messaging.onMessage(function (payload) { if (onMessageReceieved !== undefined && onMessageReceieved instanceof Function) { onMessageReceieved(payload); } dispatch(onMessage(payload)); }); }; }