I unfortunately don't have time to maintain this project anymore. I'd be happy to share commit access with anyone interested in taking over the project, get in touch if you'd like to revive rsf!
A redux-saga integration for firebase.
- Try out the example app and browse its code.
- It also works with React Native 📱! Here's a very simple example: https://github.com/n6g7/cat/tree/master/rn.
- Browse the docs at https://redux-saga-firebase.js.org/.
Install with:
yarn add redux-saga-firebaseInitialize a firebase app and instantiate 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:
function* syncSaga() {
yield fork(reduxSagaFirebase.database.sync, 'todos', {
successActionCreator: syncTodos,
})
}Make sure your client provides a implementation of fetch, either natively or via a polyfill (whatwg-fetch is a pretty good one).
*auth.applyActionCode(code)auth.channel()*auth.confirmPasswordReset(code, newPassword)*auth.createUserWithEmailAndPassword(email, password)*auth.deleteProfile()*auth.linkWithPopup(authProvider)*auth.linkWithRedirect(authProvider)*auth.sendEmailVerification(actionCodeSettings)*auth.sendPasswordResetEmail(email, actionCodeSettings)*auth.signInAndRetrieveDataWithCredential(credential)*auth.signInAnonymously()*auth.signInWithCredential(credential)*auth.signInWithCustomToken(token)*auth.signInWithEmailAndPassword(email, password)*auth.signInWithPhoneNumber(phoneNumber, applicationVerifier)*auth.signInWithPopup(authProvider)*auth.signInWithRedirect(authProvider)*auth.signOut()*auth.unlink(authProvider)*auth.updateEmail(email)*auth.updatePassword(password)*auth.updateProfile(profile)
*database.read(path)*database.create(path, data)*database.update(path, data)*database.patch(path, data)*database.delete(path)database.channel(path, event, buffer)*database.sync(path, options, event)
*firestore.addDocument(collectionRef, data)firestore.channel(pathOrRef, type, buffer)*firestore.deleteDocument(documentRef)*firestore.getCollection(collectionRef)*firestore.getDocument(docRef)*firestore.setDocument(docRef, data, options)*firestore.syncCollection(pathOrRef, options)*firestore.syncDocument(pathOrRef, options)*firestore.updateDocument(docRef, ...args)
messaging.channel()*messaging.syncMessages(options)*messaging.syncToken(options)messaging.tokenRefreshChannel()
storage.uploadFile(path, file, metadata)storage.uploadString(path, string, format, metadata)*storage.getDownloadURL(path)*storage.getFileMetadata(path)*storage.updateFileMetadata(path, newMetadata)*storage.deleteFile(path)
- Clone
- Link lib to example site:
yarn linkin root directoryyarn link redux-saga-firebaseinexampledirectory
- Run tests:
yarn test