Install with:
yarn add redux-saga-firebase
Initialize a firebase app and instanciate redux-saga-firebase:
import firebase from 'firebase'
import '@firebase/firestore' // 👈 If you're using firestore
import ReduxSagaFirebase from 'redux-saga-firebase'
const myFirebaseApp = firebase.initializeApp({
apiKey: "qosjdqsdkqpdqldkqdkfojqjpfk",
authDomain: "my-app.firebaseapp.com",
databaseURL: "https://my-app.firebaseio.com",
})
const reduxSagaFirebase = new ReduxSagaFirebase(myFirebaseApp)
You can now use reduxSagaFirebase
methods in your sagas:
const authProvider = new firebase.auth.GoogleAuthProvider()
function* loginSaga() {
try {
const data = yield call(reduxSagaFirebase.auth.signInWithPopup, authProvider)
yield put(loginSuccess(data))
}
catch(error) {
yield put(loginFailure(error))
}
}
export default function* rootSaga() {
yield all([
takeEvery(types.LOGIN.REQUEST, loginSaga)
])
}
Make sure your client provides a implementation of fetch
, either natively or via a polyfill (whatwg-fetch
is a pretty good one).