orb-ui-firebase
Version:
Firebase with redux
67 lines (58 loc) • 1.67 kB
JavaScript
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));
});
};
}