orb-ui-firebase
Version:
Firebase with redux
54 lines (49 loc) • 1.56 kB
JavaScript
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
import * as types from './types';
export function authStateChanged(user) {
return {
type: types.AUTH_STATE_CHANGED,
payload: user
};
}
export function authError(error) {
return {
type: types.AUTH_ERROR,
payload: error
};
}
export function defaultUserData(user) {
if (user != null) {
return {
displayName: user.displayName,
email: user.email,
photoURL: user.photoURL,
emailVerified: user.emailVerified,
isAnonymous: user.isAnonymous,
uid: user.uid,
providerData: user.providerData,
isAuthorised: true
};
} else {
return {
isAuthorised: false
};
}
}
export function watchAuth(firebaseApp, onAuthStateChanged, onAuthError) {
return function (dispatch) {
firebaseApp.auth().onAuthStateChanged(function (user) {
if (onAuthStateChanged && onAuthStateChanged instanceof Function) {
dispatch(authStateChanged(_extends({ isAuthorised: !!user }, onAuthStateChanged(user))));
} else {
dispatch(authStateChanged(_extends({ isAuthorised: !!user }, defaultUserData(user))));
}
}, function (error) {
if (onAuthError && onAuthError instanceof Function) {
dispatch(authError(error));
} else {
dispatch(authError(error));
}
});
};
}