diff --git a/README.md b/README.md index 440b1e4ca..b37d7fe7f 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ If you're not, you can access the library on [unpkg](https://unpkg.com/redux-fir ### Older Versions -Interested in support for versions of [`react-redux`](https://github.com/reduxjs/react-redux) before v6 or the [new react context API](https://reactjs.org/docs/context.html)? Checkout the `v2.*.*` versions (installed through `npm i --save react-redux-firebase^@2.5.0`). +Interested in support for versions of [`react-redux`](https://github.com/reduxjs/react-redux) before v6 or the [new react context API](https://reactjs.org/docs/context.html)? Checkout [the `v2.*.*` versions](https://github.com/prescottprue/react-redux-firebase/tree/v2) (installed through `npm i --save react-redux-firebase^@2.5.0`). ## Use diff --git a/SUMMARY.md b/SUMMARY.md index d47f2df94..abb07a834 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -31,6 +31,7 @@ * [useFirebase](/docs/api/useFirebase.md) * [useFirebaseConnect](/docs/api/useFirebaseConnect.md) * [useFirestore](/docs/api/useFirestore.md) + * [useFirestoreConnect](/docs/api/useFirebaseConnect.md) * HOCs * [firebaseConnect](/docs/api/firebaseConnect.md) * [withFirebase](/docs/api/withFirebase.md) diff --git a/bin/api-docs-generate.js b/bin/api-docs-generate.js index 1496b9bd1..492bcd7cb 100644 --- a/bin/api-docs-generate.js +++ b/bin/api-docs-generate.js @@ -1,13 +1,31 @@ /* eslint-disable no-console */ const exec = require('child-process-promise').exec const fs = require('fs') +const { promisify } = require('util') + +const readFilePromise = promisify(fs.readFile) +const writeFilePromise = promisify(fs.writeFile) const SRC_FOLDER = 'src' +const API_DOCS_FOLDER = 'docs/api' const pathsToSkip = ['index.js', 'utils', '.DS_Store', 'actions'] const fileRenames = { 'createFirebaseInstance.js': 'firebaseInstance' } +/** + * Remove see field from markdown file + * @param {string} filePath - Path of file to remove see field from + * @returns {Promise} Resolves after all instances of see parameter are removed + */ +function removeSeeFromMarkdown(filePath) { + return readFilePromise(filePath).then(fileContentsBuffer => { + const fileContents = fileContentsBuffer.toString() + const cleanedContents = fileContents.replace(/\n-.*\*\*See.*/g, '') + return writeFilePromise(filePath, cleanedContents) + }) +} + /** * @param {object} file - File object for which to generate docs * @returns {Promise} Resolves after running docs generation @@ -16,11 +34,14 @@ function generateDocForFile(file) { return exec( `$(npm bin)/documentation build ${SRC_FOLDER}/${ file.src - } -f md -o docs/api/${file.dest} --shallow` + } -f md -o ${API_DOCS_FOLDER}/${file.dest} --shallow` ) .then(res => { console.log('Successfully generated', file.dest || file) - return res + return removeSeeFromMarkdown( + `${process.cwd()}/${API_DOCS_FOLDER}/${file.dest}` + ) + // return res }) .catch(error => { console.log('error generating doc: ', error.message || error) diff --git a/book.json b/book.json index b8ca020b5..fe4264984 100644 --- a/book.json +++ b/book.json @@ -22,13 +22,13 @@ "gitbookConfigURL": "https://storage.googleapis.com/docs.react-redux-firebase.com/book.json", "options": [ { - "value": "http://docs.react-redux-firebase.com/history/v2.0.0/", - "text": "Version 2.0.0", - "selected": true + "value": "http://react-redux-firebase.com/", + "text": "Version 3.0.0", + "selected": true }, { - "value": "http://docs.react-redux-firebase.com/history/v3.0.0/", - "text": "Version 3.0.0" + "value": "http://docs.react-redux-firebase.com/history/v2.0.0/", + "text": "Version 2.0.0" }, { "value": "http://docs.react-redux-firebase.com/history/v1.5.0/", diff --git a/docs/api/README.md b/docs/api/README.md index 5d9ba43b3..48861377d 100644 --- a/docs/api/README.md +++ b/docs/api/README.md @@ -3,18 +3,17 @@ Just like [redux](http://redux.js.org/docs/api/index.html), the react-redux-firebase API surface is intentionally as small as possible. ## Top-Level Exports -* [firebaseConnect](/docs/api/firebaseConnect.md#firebaseconnect) -* [firestoreConnect](/docs/api/firestoreConnect.md#firebaseconnect) -* [withFirebase](/docs/api/withFirebase.md) -* [withFirestore](/docs/api/withFirestore.md) * [useFirebase](/docs/api/useFirebase.md#usefirebase) * [useFirebaseConnect](/docs/api/useFirebaseConnect.md#usefirebaseconnect) * [useFirestore](/docs/api/useFirestore.md#usefirestore) * [useFirestoreConnect](/docs/api/useFirestoreConnect.md#usefirebaseconnect) +* [firebaseConnect](/docs/api/firebaseConnect.md#firebaseconnect) +* [withFirebase](/docs/api/withFirebase.md) +* [firestoreConnect](/docs/api/firestoreConnect.md) +* [withFirestore](/docs/api/withFirestore.md) * [reducer](/docs/api/reducer.md) (also exported as `firebaseReducer`) * [constants](/docs/api/constants.md) * [actionTypes](/docs/api/constants.md) -* [helpers](/docs/api/helpers.md) * [isLoaded](/docs/api/helpers.md#isLoaded) * [isEmpty](/docs/api/helpers.md#isEmpty) * [populate](/docs/api/helpers.md#populate) diff --git a/docs/api/ReactReduxFirebaseProvider.md b/docs/api/ReactReduxFirebaseProvider.md index 7ab0904fa..006a4ad8a 100644 --- a/docs/api/ReactReduxFirebaseProvider.md +++ b/docs/api/ReactReduxFirebaseProvider.md @@ -7,10 +7,9 @@ ## ReactReduxFirebaseProvider -- **See: [http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/ReactReduxFirebaseProvider.html][3]** -Provider for context containing extended firebase instance created -by react-redux-firebase +Provider for context containing extended firebase +instance created by react-redux-firebase. ### Parameters @@ -28,7 +27,7 @@ Returns **React.Context.Provider** Provider for react-redux-firebase context [2]: #parameters -[3]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/ReactReduxFirebaseProvider.html +[3]: https://react-redux-firebase.com/api/docs/ReactReduxFirebaseProvider.html [4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object diff --git a/docs/api/ReduxFirestoreProvider.md b/docs/api/ReduxFirestoreProvider.md index 38876f0e5..84aaf7c25 100644 --- a/docs/api/ReduxFirestoreProvider.md +++ b/docs/api/ReduxFirestoreProvider.md @@ -7,7 +7,6 @@ ## ReduxFirestoreProvider -- **See: [http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/ReduxFirestoreProvider.html][3]** Provider for context containing extended firestore instance created by react-redux-firebase @@ -28,7 +27,7 @@ Returns **React.Context.Provider** Provider for redux-firestore context [2]: #parameters -[3]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/ReduxFirestoreProvider.html +[3]: https://react-redux-firebase.com/docs/api/ReduxFirestoreProvider.html [4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object diff --git a/docs/api/firebaseConnect.md b/docs/api/firebaseConnect.md index a97414dee..cbe967cb1 100644 --- a/docs/api/firebaseConnect.md +++ b/docs/api/firebaseConnect.md @@ -9,7 +9,12 @@ ## firebaseConnect -- **See: [http://react-redux-firebase.com/api/firebaseConnect.html][5]** +**Extends React.Component** + + +React Higher Order Component that automatically listens/unListens to +Firebase Real Time Database on mount/unmount of the component. This uses +React's Component Lifecycle hooks. ### Parameters @@ -104,7 +109,7 @@ Returns **React.Component** Component wrapped in context [4]: #parameters-1 -[5]: http://react-redux-firebase.com/api/firebaseConnect.html +[5]: https://react-redux-firebase.com/docs/api/firebaseConnect.html [6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array diff --git a/docs/api/firebaseInstance.md b/docs/api/firebaseInstance.md index ab92c0555..0241a178b 100644 --- a/docs/api/firebaseInstance.md +++ b/docs/api/firebaseInstance.md @@ -83,7 +83,6 @@ Returns **[object][66]** Extended Firebase instance ## set -- **See: [http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/firebaseInstance.html#set][68] import React, { Component } from 'react' import PropTypes from 'prop-types' import { firebaseConnect } from 'react-redux-firebase' @@ -96,41 +95,41 @@ Returns **[object][66]** Extended Firebase instance } export default firebaseConnect()(Example)** -Sets data to Firebase. More info available in -[the docs][69]. +Sets data to Firebase. ### Parameters -- `path` **[string][70]** Path to location on Firebase which to set -- `value` **([object][66] \| [string][70] \| [boolean][71] \| [number][72])** Value to write to Firebase +- `path` **[string][69]** Path to location on Firebase which to set +- `value` **([object][66] \| [string][69] \| [boolean][70] \| [number][71])** Value to write to Firebase - `onComplete` **[Function][67]** Function to run on complete (`not required`) -Returns **[Promise][73]** Containing reference snapshot +Returns **[Promise][72]** Containing reference snapshot ## setWithMeta + Sets data to Firebase along with meta data. Currently, this includes createdAt and createdBy. _Warning_ using this function may have unintented consequences (setting createdAt even if data already -exists). More info available in [the docs][74]. +exists). ### Parameters -- `path` **[string][70]** Path to location on Firebase which to set -- `value` **([object][66] \| [string][70] \| [boolean][71] \| [number][72])** Value to write to Firebase +- `path` **[string][69]** Path to location on Firebase which to set +- `value` **([object][66] \| [string][69] \| [boolean][70] \| [number][71])** Value to write to Firebase - `onComplete` **[Function][67]** Function to run on complete (`not required`) -Returns **[Promise][73]** Containing reference snapshot +Returns **[Promise][72]** Containing reference snapshot ## push -Pushes data to Firebase. More info -available in [the docs][75]. + +Pushes data to Firebase. ### Parameters -- `path` **[string][70]** Path to location on Firebase which to push -- `value` **([object][66] \| [string][70] \| [boolean][71] \| [number][72])** Value to push to Firebase +- `path` **[string][69]** Path to location on Firebase which to push +- `value` **([object][66] \| [string][69] \| [boolean][70] \| [number][71])** Value to push to Firebase - `onComplete` **[Function][67]** Function to run on complete (`not required`) ### Examples @@ -152,31 +151,31 @@ function Example({ firebase: { push } }) { export default firebaseConnect()(Example) ``` -Returns **[Promise][73]** Containing reference snapshot +Returns **[Promise][72]** Containing reference snapshot ## pushWithMeta + Pushes data to Firebase along with meta data. Currently, -this includes createdAt and createdBy. More info -available in [the docs][76]. +this includes createdAt and createdBy. ### Parameters -- `path` **[string][70]** Path to location on Firebase which to set -- `value` **([object][66] \| [string][70] \| [boolean][71] \| [number][72])** Value to write to Firebase +- `path` **[string][69]** Path to location on Firebase which to set +- `value` **([object][66] \| [string][69] \| [boolean][70] \| [number][71])** Value to write to Firebase - `onComplete` **[Function][67]** Function to run on complete (`not required`) -Returns **[Promise][73]** Containing reference snapshot +Returns **[Promise][72]** Containing reference snapshot ## update Updates data on Firebase and sends new data. More info -available in [the docs][74]. +available in [the docs][73]. ### Parameters -- `path` **[string][70]** Path to location on Firebase which to update -- `value` **([object][66] \| [string][70] \| [boolean][71] \| [number][72])** Value to update to Firebase +- `path` **[string][69]** Path to location on Firebase which to update +- `value` **([object][66] \| [string][69] \| [boolean][70] \| [number][71])** Value to update to Firebase - `onComplete` **[Function][67]** Function to run on complete (`not required`) ### Examples @@ -202,34 +201,34 @@ function Example({ firebase: { update } }) { export default firebaseConnect()(Example) ``` -Returns **[Promise][73]** Containing reference snapshot +Returns **[Promise][72]** Containing reference snapshot ## updateWithMeta + Updates data on Firebase along with meta. _Warning_ using this function may have unintented consequences (setting -createdAt even if data already exists). More info available -in [the docs][77]. +createdAt even if data already exists). ### Parameters -- `path` **[string][70]** Path to location on Firebase which to update -- `value` **([object][66] \| [string][70] \| [boolean][71] \| [number][72])** Value to update to Firebase +- `path` **[string][69]** Path to location on Firebase which to update +- `value` **([object][66] \| [string][69] \| [boolean][70] \| [number][71])** Value to update to Firebase - `onComplete` **[Function][67]** Function to run on complete (`not required`) -Returns **[Promise][73]** Containing reference snapshot +Returns **[Promise][72]** Containing reference snapshot ## remove + Removes data from Firebase at a given path. **NOTE** A seperate action is not dispatched unless `dispatchRemoveAction: true` is provided to config on store creation. That means that a listener must be attached in order for state to be updated when calling remove. -More info available in [the docs][78]. ### Parameters -- `path` **[string][70]** Path to location on Firebase which to remove +- `path` **[string][69]** Path to location on Firebase which to remove - `onComplete` **[Function][67]** Function to run on complete (`not required`) - `options` **[Function][67]** Options object @@ -252,19 +251,19 @@ function Example({ firebase: { remove } }) { export default firebaseConnect()(Example) ``` -Returns **[Promise][73]** Containing reference snapshot +Returns **[Promise][72]** Containing reference snapshot ## uniqueSet + Sets data to Firebase only if the path does not already exist, otherwise it rejects. Internally uses a Firebase transaction to prevent a race condition between seperate clients calling uniqueSet. -More info available in [the docs][79]. ### Parameters -- `path` **[string][70]** Path to location on Firebase which to set -- `value` **([object][66] \| [string][70] \| [boolean][71] \| [number][72])** Value to write to Firebase +- `path` **[string][69]** Path to location on Firebase which to set +- `value` **([object][66] \| [string][69] \| [boolean][70] \| [number][71])** Value to write to Firebase - `onComplete` **[Function][67]** Function to run on complete (`not required`) ### Examples @@ -286,85 +285,87 @@ function Example({ firebase: { uniqueSet } }) { export default firebaseConnect()(Example) ``` -Returns **[Promise][73]** Containing reference snapshot +Returns **[Promise][72]** Containing reference snapshot ## uploadFile + Upload a file to Firebase Storage with the option to store its metadata in Firebase Database. More info available in [the docs][80]. ### Parameters -- `path` **[string][70]** Path to location on Firebase which to set +- `path` **[string][69]** Path to location on Firebase which to set - `file` **File** File object to upload (usually first element from array output of select-file or a drag/drop `onDrop`) -- `dbPath` **[string][70]** Database path to place uploaded file metadata +- `dbPath` **[string][69]** Database path to place uploaded file metadata - `options` **[object][66]** Options - - `options.name` **[string][70]** Name of the file + - `options.name` **[string][69]** Name of the file - `options.metdata` **[object][66]** Metadata for the file (passed as second argument to storage.put calls) -Returns **[Promise][73]** Containing the File object +Returns **[Promise][72]** Containing the File object ## uploadFiles + Upload multiple files to Firebase Storage with the option -to store their metadata in Firebase Database. More info available -in [the docs][81]. +to store their metadata in Firebase Database. ### Parameters -- `path` **[string][70]** Path to location on Firebase which to set +- `path` **[string][69]** Path to location on Firebase which to set - `files` **[Array][82]** Array of File objects to upload (usually from a select-file or a drag/drop `onDrop`) -- `dbPath` **[string][70]** Database path to place uploaded files metadata. +- `dbPath` **[string][69]** Database path to place uploaded files metadata. - `options` **[object][66]** Options - - `options.name` **[string][70]** Name of the file + - `options.name` **[string][69]** Name of the file -Returns **[Promise][73]** Containing an array of File objects +Returns **[Promise][72]** Containing an array of File objects ## deleteFile + Delete a file from Firebase Storage with the option to -remove its metadata in Firebase Database. More info available -in [the docs][83]. +remove its metadata in Firebase Database. ### Parameters -- `path` **[string][70]** Path to location on Firebase which to set -- `dbPath` **[string][70]** Database path to place uploaded file metadata +- `path` **[string][69]** Path to location on Firebase which to set +- `dbPath` **[string][69]** Database path to place uploaded file metadata -Returns **[Promise][73]** Containing the File object +Returns **[Promise][72]** Containing the File object ## watchEvent + Watch event. **Note:** this method is used internally so examples have not yet been created, and it may not work as expected. -More info available in [the docs][84]. ### Parameters -- `type` **[string][70]** Type of watch event -- `path` **[string][70]** Path to location on Firebase which to set listener -- `storeAs` **[string][70]** Name of listener results within redux store +- `type` **[string][69]** Type of watch event +- `path` **[string][69]** Path to location on Firebase which to set listener +- `storeAs` **[string][69]** Name of listener results within redux store - `options` **[object][66]** Event options object (optional, default `{}`) - `options.queryParams` **[Array][82]** List of parameters for the query - - `options.queryId` **[string][70]** id of the query + - `options.queryId` **[string][69]** id of the query -Returns **([Promise][73] | void)** Results of calling watch event +Returns **([Promise][72] | void)** Results of calling watch event ## unWatchEvent + Unset a listener watch event. **Note:** this method is used internally so examples have not yet been created, and it may not work -as expected. More info available in [the docs][85]. +as expected. ### Parameters -- `type` **[string][70]** Type of watch event -- `path` **[string][70]** Path to location on Firebase which to unset listener -- `queryId` **[string][70]** Id of the listener +- `type` **[string][69]** Type of watch event +- `path` **[string][69]** Path to location on Firebase which to unset listener +- `queryId` **[string][69]** Id of the listener - `options` **[object][66]** Event options object (optional, default `{}`) Returns **void** @@ -385,45 +386,49 @@ return a Promise. - `options` **[object][66]** The options object that you would like to pass to your watchArray generating function. -Returns **[Promise][73]** Resolves with an array of watchEvent results +Returns **[Promise][72]** Resolves with an array of watchEvent results ## login + Logs user into Firebase. For examples, visit the -[auth section of the docs][86] +[auth section of the docs][88] or the +[auth recipes section][89]. ### Parameters - `credentials` **[object][66]** Credentials for authenticating - - `credentials.provider` **[string][70]** External provider (google | + - `credentials.provider` **[string][69]** External provider (google | facebook | twitter) - - `credentials.type` **[string][70]** Type of external authentication + - `credentials.type` **[string][69]** Type of external authentication (popup | redirect) (only used with provider) - - `credentials.email` **[string][70]** Credentials for authenticating - - `credentials.password` **[string][70]** Credentials for authenticating (only used with email) + - `credentials.email` **[string][69]** Credentials for authenticating + - `credentials.password` **[string][69]** Credentials for authenticating (only used with email) -Returns **[Promise][73]** Containing user's auth data +Returns **[Promise][72]** Containing user's auth data ## handleRedirectResult Logs user into Firebase using external. For examples, visit the -[auth section][87] +[auth section][90] ### Parameters - `authData` **[object][66]** Auth data from Firebase's getRedirectResult -Returns **[Promise][73]** Containing user's profile +Returns **[Promise][72]** Containing user's profile ## logout + Logs user out of Firebase and empties firebase state from redux store -Returns **[Promise][73]** Resolves after logout is complete +Returns **[Promise][72]** Resolves after logout is complete ## createUser + Creates a new user in Firebase authentication. If `userProfile` config option is set, user profiles will be set to this location. @@ -431,47 +436,51 @@ location. ### Parameters - `credentials` **[object][66]** Credentials for authenticating - - `credentials.email` **[string][70]** Credentials for authenticating - - `credentials.password` **[string][70]** Credentials for authenticating (only used with email) + - `credentials.email` **[string][69]** Credentials for authenticating + - `credentials.password` **[string][69]** Credentials for authenticating (only used with email) - `profile` **[object][66]** Data to include within new user profile -Returns **[Promise][73]** Containing user's auth data +Returns **[Promise][72]** Containing user's auth data ## resetPassword + Sends password reset email ### Parameters - `credentials` **[object][66]** Credentials for authenticating - - `credentials.email` **[string][70]** Credentials for authenticating + - `credentials.email` **[string][69]** Credentials for authenticating -Returns **[Promise][73]** Resolves after password reset email is sent +Returns **[Promise][72]** Resolves after password reset email is sent ## confirmPasswordReset + Confirm that a user's password has been reset ### Parameters -- `code` **[string][70]** Password reset code to verify -- `password` **[string][70]** New Password to confirm reset to +- `code` **[string][69]** Password reset code to verify +- `password` **[string][69]** New Password to confirm reset to -Returns **[Promise][73]** Resolves after password reset is confirmed +Returns **[Promise][72]** Resolves after password reset is confirmed ## verifyPasswordResetCode + Verify that a password reset code from a password reset email is valid ### Parameters -- `code` **[string][70]** Password reset code to verify +- `code` **[string][69]** Password reset code to verify -Returns **[Promise][73]** Containing user auth info +Returns **[Promise][72]** Containing user auth info ## updateProfile + Update user profile on Firebase Real Time Database or Firestore (if `useFirestoreForProfile: true` config passed to reactReduxFirebase). Real Time Database update uses `update` method @@ -482,59 +491,64 @@ internally while updating profile on Firestore uses `set` with - `profileUpdate` **[object][66]** Profile data to place in new profile - `options` **[object][66]** Options object (used to change how profile update occurs) - - `options.useSet` **[boolean][71]** Use set with merge instead of + - `options.useSet` **[boolean][70]** Use set with merge instead of update. Setting to `false` uses update (can cause issue of profile document does not exist). Note: Only used when updating profile on Firestore (optional, default `true`) - - `options.merge` **[boolean][71]** Whether or not to use merge when + - `options.merge` **[boolean][70]** Whether or not to use merge when setting profile. Note: Only used when updating profile on Firestore (optional, default `true`) -Returns **[Promise][73]** Returns after updating profile within database +Returns **[Promise][72]** Returns after updating profile within database ## updateAuth + Update Auth profile object ### Parameters - `authUpdate` **[object][66]** Update to be auth object -- `updateInProfile` **[boolean][71]** Update in profile +- `updateInProfile` **[boolean][70]** Update in profile -Returns **[Promise][73]** Returns after updating auth profile +Returns **[Promise][72]** Returns after updating auth profile ## updateEmail + Update user's email ### Parameters -- `newEmail` **[string][70]** Update to be auth object -- `updateInProfile` **[boolean][71]** Update in profile +- `newEmail` **[string][69]** Update to be auth object +- `updateInProfile` **[boolean][70]** Update in profile -Returns **[Promise][73]** Resolves after email is updated in user's auth +Returns **[Promise][72]** Resolves after email is updated in user's auth ## reloadAuth + Reload user's auth object. Must be authenticated. -Returns **[Promise][73]** Resolves after reloading firebase auth +Returns **[Promise][72]** Resolves after reloading firebase auth ## linkWithCredential + Links the user account with the given credentials. ### Parameters - `credential` **firebase.auth.AuthCredential** The auth credential -Returns **[Promise][73]** Resolves after linking auth with a credential +Returns **[Promise][72]** Resolves after linking auth with a credential ## actionCreators + ### Parameters - `credential` **firebase.auth.ConfirmationResult** The auth credential -Returns **[Promise][73]** +Returns **[Promise][72]** ## actionCreators @@ -564,7 +578,6 @@ Returns **firebase.database.Auth** ## getFirebase -- **See: [http://react-redux-firebase.com/api/getFirebase.html][88]** Get internal Firebase instance with methods which are wrapped with action dispatches. Useful for integrations into external libraries such as redux-thunk and redux-observable. @@ -740,44 +753,72 @@ Returns **[object][66]** Firebase instance with methods which dispatch redux act [67]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function -[68]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/firebaseInstance.html#set +[68]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#set -[69]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/props-firebase.html#set +[69]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String -[70]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String +[70]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean -[71]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean +[71]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number -[72]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number +[72]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise -[73]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise +[73]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#update -[74]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/props-firebase.html#update +[74]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#push -[75]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/props-firebase.html#push +[75]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#pushwithmeta -[76]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/props-firebase.html#pushWithMeta +[76]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#updatewithmeta -[77]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/props-firebase.html#updateWithMeta +[77]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#remove -[78]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/props-firebase.html#remove +[78]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#uniqueset -[79]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/props-firebase.html#uniqueSet +[79]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#uploadfile -[80]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/props-firebase.html#uploadFile +[80]: <> -[81]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/props-firebase.html#uploadFiles +[81]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#uploadfiles [82]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array -[83]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/props-firebase.html#deleteFile +[83]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#deletefile + +[84]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#watchevent + +[85]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#unwatchevent + +[86]: https://react-redux-firebase.com/docs/auth.html#logincredentials + +[87]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#login + +[88]: https://react-redux-firebase.com/docs/auth.html + +[89]: https://react-redux-firebase.com/docs/recipes/auth.html + +[90]: /docs/recipes/auth.md + +[91]: https://react-redux-firebase.com/docs/auth.html#logout + +[92]: https://react-redux-firebase.com/docs/auth.html#createuser + +[93]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#resetpassword + +[94]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#confirmpasswordreset + +[95]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#verifypasswordreset + +[96]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#updateprofile + +[97]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#updateauth -[84]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/props-firebase.html#watchEvent +[98]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#updateemail -[85]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/props-firebase.html#unwatchevent +[99]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#reloadauth -[86]: /docs/auth.md +[100]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#linkwithcredential -[87]: /docs/recipes/auth.md +[101]: https://react-redux-firebase.com/docs/api/firebaseInstance.html#signinwithphonenumber -[88]: http://react-redux-firebase.com/api/getFirebase.html +[102]: http://react-redux-firebase.com/api/getFirebase.html diff --git a/docs/api/firestoreConnect.md b/docs/api/firestoreConnect.md index 44a5801c1..74fe0a09d 100644 --- a/docs/api/firestoreConnect.md +++ b/docs/api/firestoreConnect.md @@ -9,7 +9,13 @@ ## firestoreConnect -- **See: [http://react-redux-firebase.com/api/firestoreConnect.html][5]** +**Extends React.Component** + + +Higher Order Component that automatically listens/unListens +to provided Cloud Firestore paths using React's Lifecycle hooks. Make sure you +have required/imported Cloud Firestore, including it's reducer, before +attempting to use. **Note** Populate is not yet supported. ### Parameters @@ -63,7 +69,7 @@ Returns **React.Component** Component wrapped in context [4]: #parameters-1 -[5]: http://react-redux-firebase.com/api/firestoreConnect.html +[5]: https://react-redux-firebase.com/docs/api/firestoreConnect.html [6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array diff --git a/docs/api/helpers.md b/docs/api/helpers.md index a3fdd03cb..29804e61b 100644 --- a/docs/api/helpers.md +++ b/docs/api/helpers.md @@ -217,7 +217,7 @@ const enhance = compose( // each todo has child 'owner' populated from matching uid in 'users' root // for loading un-populated todos use state.firebase.data.todos todos: populate(state.firebase, 'todos', populates), - }) + })) ) export default enhance(SomeComponent) diff --git a/docs/api/useFirebase.md b/docs/api/useFirebase.md index 4095aa3c8..1540a4275 100644 --- a/docs/api/useFirebase.md +++ b/docs/api/useFirebase.md @@ -7,7 +7,13 @@ ## useFirebase -- **See: [http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/useFirebase.html][3]** + +React hook that provides `firebase` object. +Firebase is gathered from `store.firebase`, which is attached to store +by the store enhancer (`reactReduxFirebase`) during setup. +**NOTE**: This version of the Firebase library has extra methods, config, +and functionality which give it it's capabilities such as dispatching +actions. ### Examples @@ -40,6 +46,6 @@ Returns **[object][4]** Extended Firebase instance [2]: #examples -[3]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/useFirebase.html +[3]: https://react-redux-firebase.com/docs/api/useFirebase.html [4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object diff --git a/docs/api/useFirebaseConnect.md b/docs/api/useFirebaseConnect.md index f7f6647c7..9918d9583 100644 --- a/docs/api/useFirebaseConnect.md +++ b/docs/api/useFirebaseConnect.md @@ -8,7 +8,6 @@ ## useFirebaseConnect -- **See: [http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/useFirebaseConnect.html][4]** Hook that automatically listens/unListens to provided firebase paths using React's useEffect hook. @@ -25,6 +24,7 @@ using React's useEffect hook. _Ordered Data_ ```javascript +import React from 'react' import { useSelector } from 'react-redux' import { useFirebaseConnect } from 'react-redux-firebase' @@ -44,31 +44,31 @@ export default function Todos() { _Data that depends on props_ ```javascript +import React from 'react' import { compose } from 'redux' import { useSelector } from 'react-redux' import { useFirebaseConnect } from 'react-redux-firebase' -function Post({ postId }) { +export default function Post({ postId }) { useFirebaseConnect(`posts/${postId}`) // sync /posts/postId from firebase into redux - const post = useSelector(({ firebase }) => state.firebase.ordered.posts && state.firebase.ordered.posts[postId]) + const post = useSelector(({ firebase: { ordered: { posts } } }) => posts && posts[postId]) return (
{JSON.stringify(post, null, 2)}
) } - -export default enhance(Post) ``` _Data that depends on props, an array as a query_ ```javascript +import React from 'react' import { compose } from 'redux' import { useSelector } from 'react-redux' import { useFirebaseConnect, getVal } from 'react-redux-firebase' -function Post({ post, postId }) { +export default function Post({ postId }) { useFirebaseConnect([`posts/${postId}`], [postId]) // sync /posts/postId from firebase into redux const post = useSelector(state => { return state.firebase.ordered.posts && state.firebase.ordered.posts[postId] @@ -79,8 +79,6 @@ function Post({ post, postId }) { ) } - -export default Post ``` [1]: #usefirebaseconnect @@ -89,7 +87,7 @@ export default Post [3]: #examples -[4]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/useFirebaseConnect.html +[4]: https://react-redux-firebase.com/docs/api/useFirebaseConnect.html [5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object diff --git a/docs/api/useFirestore.md b/docs/api/useFirestore.md index 281667c04..a48c10375 100644 --- a/docs/api/useFirestore.md +++ b/docs/api/useFirestore.md @@ -7,7 +7,11 @@ ## useFirestore -- **See: [http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/useFirestore.html][3]** + +React hook that return firestore object. +Firestore instance is gathered from `store.firestore`, which is attached +to store by the store enhancer (`reduxFirestore`) during setup of +[`redux-firestore`][4] ### Examples @@ -17,7 +21,7 @@ _Basic_ import React from 'react' import { useFirestore } from 'react-redux-firebase' -function AddData({ firebase: { add } }) { +export default function AddData({ firebase: { add } }) { const firestore = useFirestore() function addTodo() { @@ -33,16 +37,16 @@ function AddData({ firebase: { add } }) { ) } - -export default AddTodo ``` -Returns **[object][4]** Extended Firestore instance +Returns **[object][5]** Extended Firestore instance [1]: #usefirestore [2]: #examples -[3]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/useFirestore.html +[3]: https://react-redux-firebase.com/docs/api/useFirestore.html + +[4]: https://github.com/prescottprue/redux-firestore -[4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object +[5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object diff --git a/docs/api/useFirestoreConnect.md b/docs/api/useFirestoreConnect.md index 11cd7234d..200d86d56 100644 --- a/docs/api/useFirestoreConnect.md +++ b/docs/api/useFirestoreConnect.md @@ -8,7 +8,6 @@ ## useFirestoreConnect -- **See: [http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/useFirestoreConnect.html][4]** React hook that automatically listens/unListens to provided Cloud Firestore paths. Make sure you have required/imported @@ -31,7 +30,7 @@ import { map } from 'lodash' import { useSelector } from 'react-redux' import { useFirebaseConnect } from 'react-redux-firebase' -function TodosList() { +export default function TodosList() { useFirebaseConnect('todos') // sync todos collection from Firestore into redux const todos = useSelector(state => state.firebase.data.todos) return ( @@ -42,7 +41,6 @@ function TodosList() { ) } -export default TodosList ``` _Object as query_ @@ -53,21 +51,15 @@ import { get } from 'lodash' import { connect } from 'react-redux' import { useFirebaseConnect } from 'react-redux-firebase' -function TodoItem({ todoId, todoData }) { +export default function TodoItem({ todoId }) { useFirebaseConnect(() => ({ collection: 'todos', doc: todoId - }), [todoId]) // include dependency in the hook + })) + const todo = useSelector(({ firebase: { data } }) => data.todos && data.todos[todoId]) return
{JSON.stringify(todoData)}
} - -// pass todo data from redux as props.todosList -export default compose( - connect((state) => ({ - todoData: get(state, ['firestore', 'data', 'todos', todoId]) - }) -)(TodoItem) ``` [1]: #usefirestoreconnect @@ -76,7 +68,7 @@ export default compose( [3]: #examples -[4]: http://docs.react-redux-firebase.com/history/v3.0.0/docs/api/useFirestoreConnect.html +[4]: https://react-redux-firebase.com/docs/api/useFirestoreConnect.html [5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object diff --git a/docs/api/withFirebase.md b/docs/api/withFirebase.md index fffae5923..df780e8d8 100644 --- a/docs/api/withFirebase.md +++ b/docs/api/withFirebase.md @@ -10,7 +10,16 @@ ## withFirebase -- **See: [http://react-redux-firebase.com/api/withFirebase.html][6]** +**Extends React.Component** + + +Higher Order Component that provides `firebase` and +`dispatch` as a props to React Components. Firebase is gathered from +`store.firebase`, which is attached to store by the store enhancer +(`reactReduxFirebase`) during setup. +**NOTE**: This version of the Firebase library has extra methods, config, +and functionality which give it it's capabilities such as dispatching +actions. ### Parameters @@ -92,7 +101,7 @@ Returns **React.Component** WrappedComponent wrapped with firebase context [5]: #parameters-1 -[6]: http://react-redux-firebase.com/api/withFirebase.html +[6]: http://react-redux-firebase.com/docs/api/withFirebase.html [7]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function diff --git a/docs/api/withFirestore.md b/docs/api/withFirestore.md index 9b787ce36..4212e1549 100644 --- a/docs/api/withFirestore.md +++ b/docs/api/withFirestore.md @@ -10,7 +10,14 @@ ## withFirestore -- **See: [http://react-redux-firebase.com/api/withFirestore.html][6]** +**Extends React.Component** + + +Higher Order Component that attaches `firestore`, `firebase` +and `dispatch` as props to React Components. Firebase instance is gathered +from `store.firestore`, which is attached to store by the store enhancer +(`reduxFirestore`) during setup of +[`redux-firestore`][7] ### Parameters @@ -68,7 +75,7 @@ const enhance = compose( export default enhance(AddTodo) ``` -Returns **[Function][7]** Which accepts a component to wrap and returns the +Returns **[Function][8]** Which accepts a component to wrap and returns the wrapped component ## WithFirestore @@ -77,7 +84,7 @@ WithFirebase wrapper component ### Parameters -- `props` **[object][8]** Component props +- `props` **[object][9]** Component props Returns **React.Component** WrappedComponent wrapped with firebase context @@ -91,8 +98,10 @@ Returns **React.Component** WrappedComponent wrapped with firebase context [5]: #parameters-1 -[6]: http://react-redux-firebase.com/api/withFirestore.html +[6]: http://react-redux-firebase.com/docs/api/withFirestore.html + +[7]: https://github.com/prescottprue/redux-firestore -[7]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function +[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function -[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object +[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object diff --git a/index.d.ts b/index.d.ts index 7c88a5d9d..00792c263 100644 --- a/index.d.ts +++ b/index.d.ts @@ -27,6 +27,10 @@ export interface InferableComponentEnhancerWithProps< type mapper = (input: TInner) => TOutter +/** + * Redux action types for react-redux-firebase + * @see https://react-redux-firebase.com/docs/api/constants.html#actiontypes + */ export const actionTypes: { START: string SET: string @@ -71,6 +75,10 @@ export const actionTypes: { PROFILE_UPDATE_SUCCESS: string } +/** + * Constants used within react-redux-firbease + * @see https://react-redux-firebase.com/docs/api/constants.html + */ export const constants: { actionTypes: { AUTHENTICATION_INIT_FINISHED: string @@ -115,6 +123,9 @@ export const constants: { UNAUTHORIZED_ERROR: string UNSET_LISTENER: string } + /** + * @see https://react-redux-firebase.com/docs/api/constants.html#defaultconfig + */ defaultConfig: ReactReduxFirebaseConfig } @@ -130,7 +141,7 @@ interface RemoveOptions { /** * Firestore instance extended with methods which dispatch * redux actions. - * @see https://react-redux-firebase.com/api/firebaseInstance.html + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html */ interface ExtendedFirebaseInstance extends DatabaseTypes.FirebaseDatabase { initializeAuth: VoidFunction @@ -145,7 +156,7 @@ interface ExtendedFirebaseInstance extends DatabaseTypes.FirebaseDatabase { * @param value - Value to write to Firebase * @param onComplete - Function to run on complete (`not required`) * @returns Containing reference snapshot - * @see https://react-redux-firebase.com/api/firebaseInstance.html#set + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#set */ set: ( path: string, @@ -161,7 +172,7 @@ interface ExtendedFirebaseInstance extends DatabaseTypes.FirebaseDatabase { * @param path - Path to location on Firebase which to set * @param value - Value to write to Firebase * @param onComplete - Function to run on complete (`not required`) - * @see https://react-redux-firebase.com/api/firebaseInstance.html#setWithMeta + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#setWithMeta */ setWithMeta: ( path: string, @@ -174,7 +185,7 @@ interface ExtendedFirebaseInstance extends DatabaseTypes.FirebaseDatabase { * @param path - Path to location on Firebase which to push * @param value - Value to push to Firebase * @param onComplete - Function to run on complete - * @see https://react-redux-firebase.com/api/firebaseInstance.html#push + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#push */ push: ( path: string, @@ -188,7 +199,7 @@ interface ExtendedFirebaseInstance extends DatabaseTypes.FirebaseDatabase { * @param path - Path to location on Firebase which to set * @param value - Value to write to Firebase * @param onComplete - Function to run on complete - * @see https://react-redux-firebase.com/api/firebaseInstance.html#pushWithMeta + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#pushWithMeta */ pushWithMeta: ( path: string, @@ -218,7 +229,7 @@ interface ExtendedFirebaseInstance extends DatabaseTypes.FirebaseDatabase { * @param path - Path to location on Firebase which to update * @param value - Value to update to Firebase * @param onComplete - Function to run on complete (`not required`) - * @see https://react-redux-firebase.com/api/firebaseInstance.html#update + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#update */ update: ( path: string, @@ -233,7 +244,7 @@ interface ExtendedFirebaseInstance extends DatabaseTypes.FirebaseDatabase { * @param path - Path to location on Firebase which to update * @param value - Value to update to Firebase * @param onComplete - Function to run on complete - * @see https://react-redux-firebase.com/api/firebaseInstance.html#updateWithMeta + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#updateWithMeta */ updateWithMeta: ( path: string, @@ -250,7 +261,7 @@ interface ExtendedFirebaseInstance extends DatabaseTypes.FirebaseDatabase { * @param onComplete - Function to run on complete * @param options - Configuration for removal * @param [options.dispatchAction=true] - Whether or not to dispatch REMOVE action - * @see https://react-redux-firebase.com/api/firebaseInstance.html#remove + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#remove */ remove: ( path: string, @@ -265,7 +276,7 @@ interface ExtendedFirebaseInstance extends DatabaseTypes.FirebaseDatabase { * @param path - Path to location on Firebase which to set * @param value - Value to write to Firebase * @param onComplete - Function to run on complete (`not required`) - * @see https://react-redux-firebase.com/api/firebaseInstance.html#uniqueset + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#uniqueset */ uniqueSet: ( path: string, @@ -279,7 +290,7 @@ interface ExtendedFirebaseInstance extends DatabaseTypes.FirebaseDatabase { * @param path - Path to watch with watcher * @param storeAs - Location within redux to store value * @param options - List of parameters for the query - * @see https://react-redux-firebase.com/api/firebaseInstance.html#watchevent + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#watchevent */ watchEvent: ( type: string, @@ -296,7 +307,7 @@ interface ExtendedFirebaseInstance extends DatabaseTypes.FirebaseDatabase { * @param path - Path to location on Firebase which to unset listener * @param queryId - Id of the listener * @param options - Event options object - * @see https://react-redux-firebase.com/api/firebaseInstance.html#watchevent + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#watchevent */ unWatchEvent: ( type: string, @@ -312,7 +323,7 @@ interface ExtendedFirebaseInstance extends DatabaseTypes.FirebaseDatabase { * @param firebase - Firebase instance which to extend * @param configs - Configuration object * @param dispatch - Action dispatch function - * @see https://react-redux-firebase.com/api/firebaseInstance.html + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html */ export function createFirebaseInstance( firebase: any, @@ -333,7 +344,7 @@ export type QueryParamOptions = QueryParamOption | string[] /** * Options which can be passed to firebase query through react-redux-firebase - * @see https://react-redux-firebase.com/queries.html + * @see https://react-redux-firebase.com/docs/queries.html */ export interface ReactReduxFirebaseQuerySetting { path: string @@ -436,7 +447,8 @@ interface ExtendedFirestoreInstance extends FirestoreTypes.FirebaseFirestore { get: (docPath: string | ReduxFirestoreQuerySetting) => Promise /** - * Set data to firestore. More info available [in the docs](https://github.com/prescottprue/redux-firestore#set). + * Set data to firestore. + * @see https://github.com/prescottprue/redux-firestore#set */ set: ( docPath: string | ReduxFirestoreQuerySetting, @@ -444,7 +456,8 @@ interface ExtendedFirestoreInstance extends FirestoreTypes.FirebaseFirestore { ) => Promise /** - * Add document to firestore. More info available [in the docs](https://github.com/prescottprue/redux-firestore#add). + * Add document to firestore. + * @see https://github.com/prescottprue/redux-firestore#add */ add: ( collectionPath: string | ReduxFirestoreQuerySetting, @@ -452,7 +465,8 @@ interface ExtendedFirestoreInstance extends FirestoreTypes.FirebaseFirestore { ) => Promise<{ id: string }> /** - * Update document within firestore. More info available [in the docs](https://github.com/prescottprue/redux-firestore#update). + * Update document within firestore. + * @see https://github.com/prescottprue/redux-firestore#update */ update: ( docPath: string | ReduxFirestoreQuerySetting, @@ -460,29 +474,52 @@ interface ExtendedFirestoreInstance extends FirestoreTypes.FirebaseFirestore { ) => Promise /** - * Delete a document within firestore. More info available [in the docs](https://github.com/prescottprue/redux-firestore#delete). + * Delete a document within firestore. + * @see https://github.com/prescottprue/redux-firestore#delete */ delete: (docPath: string | ReduxFirestoreQuerySetting) => void /** * Executes the given updateFunction and then attempts to commit the changes applied within the - * transaction. More info available [in the docs](https://github.com/prescottprue/redux-firestore#runtransaction). + * transaction. + * @see https://github.com/prescottprue/redux-firestore#runtransaction */ runTransaction: typeof firebase.firestore.Firestore.runTransaction - // https://github.com/prescottprue/redux-firestore#onsnapshotsetlistener + /** + * Sets a listener within redux-firestore + * @see https://github.com/prescottprue/redux-firestore#onsnapshotsetlistener + */ onSnapshot: (options: ReduxFirestoreQuerySetting) => Promise + + /** + * Sets a listener within redux-firestore + * @see https://github.com/prescottprue/redux-firestore#onsnapshotsetlistener + */ setListener: (options: ReduxFirestoreQuerySetting) => Promise - //https://github.com/prescottprue/redux-firestore#setlisteners + /** + * Sets multiple firestore listeners created within redux-firestore + * @see https://github.com/prescottprue/redux-firestore#onsnapshotsetlisteners + */ setListeners: (optionsArray: ReduxFirestoreQuerySetting[]) => Promise - // https://github.com/prescottprue/redux-firestore#unsetlistener--unsetlisteners + /** + * Unset firestore listener created within redux-firestore + * @see https://github.com/prescottprue/redux-firestore#unsetlistener--unsetlistener + */ unsetListener: (options: ReduxFirestoreQuerySetting) => void + + /** + * Unset multiple firestore listeners created within redux-firestore + * @see https://github.com/prescottprue/redux-firestore#unsetlistener--unsetlisteners + */ unsetListeners: (options: ReduxFirestoreQuerySetting[]) => void } -// https://github.com/prescottprue/redux-firestore#other-firebase-statics +/** + * @see https://github.com/prescottprue/redux-firestore#other-firebase-statics + */ interface FirestoreStatics { FieldValue: FirestoreTypes.FieldValue FieldPath: FirestoreTypes.FieldPath @@ -539,7 +576,7 @@ interface UserProfile { /** * Firebase JS SDK Auth instance extended with methods which dispatch redux actions. - * @see https://react-redux-firebase.com/auth.html + * @see https://react-redux-firebase.com/docs/auth.html */ interface ExtendedAuthInstance { auth: () => AuthTypes.FirebaseAuth @@ -553,7 +590,7 @@ interface ExtendedAuthInstance { * (popup | redirect) (only used with provider) * @param credentials.email - Credentials for authenticating * @param credentials.password - Credentials for authenticating (only used with email) - * @see https://react-redux-firebase.com/auth.html#logincredentials + * @see https://react-redux-firebase.com/docs/auth.html#logincredentials */ login: (credentials: Credentials) => Promise @@ -563,7 +600,7 @@ interface ExtendedAuthInstance { * location. * @param credentials - Credentials for authenticating * @param profile - Data to include within new user profile - * @see https://react-redux-firebase.com/auth.html#createusercredentials-profile + * @see https://react-redux-firebase.com/docs/auth.html#createusercredentials-profile */ createUser: ( credentials: CreateUserCredentials, @@ -573,14 +610,14 @@ interface ExtendedAuthInstance { /** * Logs user out of Firebase and empties firebase state from * redux store. - * @see https://react-redux-firebase.com/auth.html#logout + * @see https://react-redux-firebase.com/docs/auth.html#logout */ logout: () => Promise /** * Sends password reset email. * @param credentials - Credentials for authenticating - * @see https://react-redux-firebase.com/auth.html#resetpasswordcredentials + * @see https://react-redux-firebase.com/docs/auth.html#resetpasswordcredentials */ resetPassword: ( credentials: AuthTypes.UserCredential, @@ -588,23 +625,29 @@ interface ExtendedAuthInstance { ) => Promise /** - * Confirm that a user's password has been reset. More info available - * [in the docs](https://react-redux-firebase.com/auth.html#confirmpasswordresetcode-newpassword). + * Confirm that a user's password has been reset. * @param code - Password reset code to verify * @param password - New Password to confirm reset to + * @see https://react-redux-firebase.com/docs/auth.html#confirmpasswordresetcode-newpassword */ confirmPasswordReset: AuthTypes.FirebaseAuth['confirmPasswordReset'] - // https://react-redux-firebase.com/auth.html#verifypasswordresetcodecode + // https://react-redux-firebase.com/docs/auth.html#verifypasswordresetcodecode verifyPasswordResetCode: AuthTypes.FirebaseAuth['verifyPasswordResetCode'] - // https://react-redux-firebase.com/auth.html#signinwithphonenumbercode + /** + * Signs in using a phone number in an async pattern (i.e. requires calling a second method). + * @param phoneNumber - Update to be auth object + * @param appVerifier - Update in profile + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#signinwithphonenumber + */ signInWithPhoneNumber: AuthTypes.FirebaseAuth['signInWithPhoneNumber'] /** * Update user's email * @param newEmail - Update to be auth object * @param updateInProfile - Update in profile + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#updateemail */ updateEmail: (newEmail: string, updateInProfile?: boolean) => Promise @@ -612,6 +655,7 @@ interface ExtendedAuthInstance { * Links the user account with the given credentials. Internally * calls `firebase.auth().currentUser.reload`. * @param credential - The auth credential + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#reloadauth */ reloadAuth: (credential?: firebase.auth.AuthCredential | any) => Promise @@ -619,6 +663,7 @@ interface ExtendedAuthInstance { * Links the user account with the given credentials. Internally * calls `firebase.auth().currentUser.linkWithCredential`. * @param credential - Credential with which to link user account + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#linkwithcredential */ linkWithCredential: ( credential: AuthTypes.AuthCredential @@ -628,6 +673,7 @@ interface ExtendedAuthInstance { * Update Auth Object * @param authUpdate - Update to be auth object * @param updateInProfile - Update in profile + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#updateauth */ updateAuth: ( authUpdate: { @@ -642,7 +688,6 @@ interface ExtendedAuthInstance { * Firestore (if `useFirestoreForProfile: true` config passed to * reactReduxFirebase). Real Time Database update uses `update` method * internally while updating profile on Firestore uses `set` with merge. - * More info available [in the docs](https://react-redux-firebase.com/recipes/profile.html#update-profile). * @param profileUpdate - Profile data to place in new profile * @param options - Options object (used to change how profile * update occurs) @@ -651,23 +696,25 @@ interface ExtendedAuthInstance { * does not exist). Note: Only used when updating profile on Firestore * @param [options.merge=true] - Whether or not to use merge when * setting profile. Note: Only used when updating profile on Firestore + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#updateprofile + * @see https://react-redux-firebase.com/docs/recipes/profile.html#update-profile */ updateProfile: (profile: Partial, options?: Object) => void } /** * Instance of Firebase Storage with methods that dispatch redux actions. - * More info available [in the docs](https://react-redux-firebase.com/storage.html) + * @see https://react-redux-firebase.com/docs/storage.html */ interface ExtendedStorageInstance { storage: () => StorageTypes.FirebaseStorage /** * Delete a file from Firebase Storage with the option to - * remove its metadata in Firebase Database. More info available - * in [the docs](https://react-redux-firebase.com/api/storage.html#deletefile). + * remove its metadata in Firebase Database. * @param path - Path to location on Firebase which to set * @param dbPath - Database path to place uploaded file metadata + * @see https://react-redux-firebase.com/docs/api/storage.html#deletefile */ deleteFile: ( path: string, @@ -676,14 +723,14 @@ interface ExtendedStorageInstance { /** * Upload a file to Firebase Storage with the option to store - * its metadata in Firebase Database. More info available - * in [the docs](https://react-redux-firebase.com/api/firebaseInstance.html#uploadFile). + * its metadata in Firebase Database. * @param path - Path to location on Firebase which to set * @param file - File object to upload (usually first element from * array output of select-file or a drag/drop `onDrop`) * @param dbPath - Database path to place uploaded file metadata * @param options - Options * @param options.name - Name of the file + * @see https://react-redux-firebase.com/docs/api/storage.html#uploadFile */ uploadFile: ( path: string, @@ -702,14 +749,14 @@ interface ExtendedStorageInstance { /** * Upload multiple files to Firebase Storage with the option - * to store their metadata in Firebase Database. More info available - * in [the docs](https://react-redux-firebase.com/api/firebaseInstance.html#uploadFiles). + * to store their metadata in Firebase Database. * @param path - Path to location on Firebase which to set * @param files - Array of File objects to upload (usually from * a select-file or a drag/drop `onDrop`) * @param dbPath - Database path to place uploaded files metadata. * @param options - Options * @param options.name - Name of the file + * @see https://react-redux-firebase.com/docs/api/storage.html#uploadFiles */ uploadFiles: ( path: string, @@ -735,7 +782,7 @@ export interface WithFirebaseProps { * React Higher Order Component that automatically listens/unListens to * Firebase Real Time Database on mount/unmount of the component. This uses * React's Component Lifecycle hooks. - * @see https://react-redux-firebase.com/api/firebaseConnect.html + * @see https://react-redux-firebase.com/docs/api/firebaseConnect.html */ export function firebaseConnect( queriesConfig?: @@ -753,28 +800,16 @@ export function firebaseConnect( * @param action.type - Type of Action being called * @param action.path - Path of action that was dispatched * @param action.data - Data associated with action - * @see https://react-redux-firebase.com/api/reducer.html + * @see https://react-redux-firebase.com/docs/api/reducer.html */ export function firebaseReducer( state: any, action: any ): FirebaseReducer.Reducer -/** - * Reducer for Firebase state - * @param state - Current Firebase Redux State (state.firebase) - * @param action - Action which will modify state - * @param action.type - Type of Action being called - * @param action.path - Path of action that was dispatched - * @param action.data - Data associated with action - */ -export function firebaseStateReducer( - state: any, - action: any -): FirestoreReducer.Reducer - /** * React HOC that attaches/detaches Cloud Firestore listeners on mount/unmount + * @see https://react-redux-firebase.com/docs/api/firestoreConnect.html */ export function firestoreConnect( connect?: mapper | ReduxFirestoreQueries @@ -790,7 +825,7 @@ export function firestoreConnect( * @param action.type - Type of Action being called * @param action.path - Path of action that was dispatched * @param action.data - Data associated with action - * @see https://react-redux-firebase.com/api/reducer.html + * @see https://react-redux-firebase.com/docs/api/reducer.html */ export function firestoreReducer( state: any, @@ -806,6 +841,7 @@ export function fixPath(path: string): string /** * Get internal Firebase instance with methods which are wrapped with action dispatches. Useful for * integrations into external libraries such as redux-thunk and redux-observable. + * @see https://react-redux-firebase.com/docs/api/getFirebase.html */ export function getFirebase(): ExtendedFirebaseInstance & ExtendedAuthInstance & ExtendedStorageInstance @@ -819,7 +855,7 @@ export function getFirebase(): ExtendedFirebaseInstance & ExtendedAuthInstance & * found in redux. This will cause `isLoaded` to always return true (since * value is set from the start). * @returns Data located at path within firebase. - * @see https://react-redux-firebase.com/api/helpers.html#getval + * @see https://react-redux-firebase.com/docs/api/helpers.html#getval */ export function getVal(firebase: any, path: string, notSetValue?: any): any @@ -828,7 +864,7 @@ export function getVal(firebase: any, path: string, notSetValue?: any): any * @param item - Item to check loaded status of. A comma seperated list * is also acceptable. * @returns Whether or not item is empty - * @see https://react-redux-firebase.com/api/helpers.html#isempty + * @see https://react-redux-firebase.com/docs/api/helpers.html#isempty */ export function isEmpty(...args: any[]): boolean @@ -837,14 +873,14 @@ export function isEmpty(...args: any[]): boolean * @param item - Item to check loaded status of. A comma separated * list is also acceptable. * @returns Whether or not item is loaded - * @see https://react-redux-firebase.com/api/helpers.html#isloaded + * @see https://react-redux-firebase.com/docs/api/helpers.html#isloaded */ export function isLoaded(...args: any[]): boolean /** * React hook that provides `firebase` object. Extended Firebase * instance is gathered from `ReactReduxFirebaseContext`. - * @see https://react-redux-firebase.com/api/useFirebase.html + * @see https://react-redux-firebase.com/docs/api/useFirebase.html */ export function useFirebase(): ExtendedFirebaseInstance & ExtendedAuthInstance & ExtendedStorageInstance @@ -856,7 +892,7 @@ export function useFirebase(): ExtendedFirebaseInstance & ExtendedAuthInstance & * from firestore. Can also be a function that returns the object or string. * @param deps - Dependency for memoizing query object. It's recommend * to include deps if using object, array or function as a query. - * @see https://react-redux-firebase.com/api/useFirestoreConnect.html + * @see https://react-redux-firebase.com/docs/api/useFirestoreConnect.html */ export function useFirebaseConnect( querySettings?: ReactReduxFirebaseQueries | ReactReduxFirebaseQueriesFunction @@ -866,8 +902,8 @@ export function useFirebaseConnect( * React hook that return firestore object. * Firestore instance is gathered from `store.firestore`, which is attached * to store by the store enhancer (`reduxFirestore`) during setup of - * [`redux-firestore`](https://github.com/prescottprue/redux-firestore) - * @see https://react-redux-firebase.com/api/useFirestore.html + * [`redux-firestore`](https://github.com/prescottprue/redux-firestore). + * @see https://react-redux-firebase.com/docs/api/useFirestore.html */ export function useFirestore(): ExtendedFirestoreInstance @@ -877,6 +913,7 @@ export function useFirestore(): ExtendedFirestoreInstance * Cloud Firestore, including it's reducer, before attempting to use. * @param queriesConfig - An object or string for paths to sync * from firestore. Can also be a function that returns the object or string. + * @see https://react-redux-firebase.com/docs/api/useFirestoreConnect.html */ export function useFirestoreConnect( queriesConfig?: @@ -895,7 +932,7 @@ export function useFirestoreConnect( * @param path - Path of parameter to load * @param populates - Array of populate config objects * @param notSetValue - Value to return if value is not found - * @see https://react-redux-firebase.com/populate.html + * @see https://react-redux-firebase.com/docs/populate.html */ export function populate( state: object, @@ -907,7 +944,7 @@ export function populate( /** * React Context provider for Firebase instance (with methods wrapped in dispatch). * Needed to use HOCs like firebaseConnect and withFirebase. - * @see https://react-redux-firebase.com/api/ReactReduxFirebaseProvider.html + * @see https://react-redux-firebase.com/docs/api/ReactReduxFirebaseProvider.html */ export function ReactReduxFirebaseProvider( props: ReactReduxFirebaseProviderProps @@ -915,7 +952,7 @@ export function ReactReduxFirebaseProvider( /** * Props passed to ReactReduxFirebaseContext component - * @see https://react-redux-firebase.com/api/ReactReduxFirebaseProvider.html + * @see https://react-redux-firebase.com/docs/api/ReactReduxFirebaseProvider.html */ export interface ReactReduxFirebaseProviderProps { firebase: any @@ -959,6 +996,10 @@ interface ReactReduxFirebaseConfig { useFirestoreForProfile?: boolean } +/** + * Configuration for redux-firestore + * @see https://github.com/prescottprue/redux-firestore#config-options + */ export interface ReduxFirestoreConfig { enableLogging: boolean @@ -996,7 +1037,7 @@ export interface ReduxFirestoreConfig { /** * Props passed to ReactReduFirebaseProvider - * @see https://react-redux-firebase.com/api/ReactReduxFirebaseProvider.html + * @see https://react-redux-firebase.com/docs/api/ReactReduxFirebaseProvider.html */ export interface ReduxFirestoreProviderProps { firebase: any @@ -1014,13 +1055,13 @@ export interface ReduxFirestoreProviderProps { /** * React Context provider for Firestore instance (with methods wrapped in dispatch). Needed to use HOCs * like firestoreConnect and withFirestore. - * @see https://react-redux-firebase.com/api/ReactReduxFirebaseProvider.html + * @see https://react-redux-firebase.com/docs/api/ReactReduxFirebaseProvider.html */ export function ReduxFirestoreProvider(props: ReduxFirestoreProviderProps): any /** * React Higher Order Component that passes firebase as a prop (comes from context.store.firebase). - * @see https://react-redux-firebase.com/api/withFirebase.html + * @see https://react-redux-firebase.com/docs/api/withFirebase.html */ export function withFirebase

( componentToWrap: React.ComponentType

@@ -1028,7 +1069,7 @@ export function withFirebase

( /** * React Higher Order Component that passes firestore as a prop (comes from context.store.firestore) - * @see https://react-redux-firebase.com/api/withFirestore.html + * @see https://react-redux-firebase.com/docs/api/withFirestore.html */ export function withFirestore

( componentToWrap: React.ComponentType

@@ -1042,8 +1083,10 @@ export namespace createFirebaseConnect { const prototype: {} } -// Your Firebase/Firestore user profile object type -// https://react-redux-firebase.com/recipes/profile.html +/** + * Firebase/Firestore user profile object type + * @see https://react-redux-firebase.com/recipes/profile.html + */ export type ProfileType = {} export interface Listeners { diff --git a/package-lock.json b/package-lock.json index 869d47db6..5396bf72e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "react-redux-firebase", - "version": "3.0.1", + "version": "3.0.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index fc989a1db..c3ac0ee10 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-redux-firebase", - "version": "3.0.1", + "version": "3.0.2", "description": "Redux integration for Firebase. Comes with a Higher Order Components for use with React.", "main": "lib/index.js", "module": "es/index.js", diff --git a/src/ReactReduxFirebaseContext.js b/src/ReactReduxFirebaseContext.js index 88a0d4b66..de43eed8d 100644 --- a/src/ReactReduxFirebaseContext.js +++ b/src/ReactReduxFirebaseContext.js @@ -1,7 +1,7 @@ import { createContext } from 'react' /** - * Context for extended firebase instance created + * @description Context for extended firebase instance created * by react-redux-firebase */ const ReactReduxFirebaseContext = createContext(null) diff --git a/src/ReactReduxFirebaseProvider.js b/src/ReactReduxFirebaseProvider.js index 458b3ea64..8e30d4b51 100644 --- a/src/ReactReduxFirebaseProvider.js +++ b/src/ReactReduxFirebaseProvider.js @@ -5,8 +5,8 @@ import ReactReduxFirebaseContext from './ReactReduxFirebaseContext' import ReduxFirestoreProvider from './ReduxFirestoreProvider' /** - * Provider for context containing extended firebase instance created - * by react-redux-firebase + * @description Provider for context containing extended firebase + * instance created by react-redux-firebase. * @param {object} props - Component props * @param {object} props.config - react-redux-firebase config * @param {Function} props.dispatch - Redux's dispatch function @@ -15,7 +15,7 @@ import ReduxFirestoreProvider from './ReduxFirestoreProvider' * @param {Function} props.createFirestoreInstance - Function for creating * extended firestore instance * @returns {React.Context.Provider} Provider for react-redux-firebase context - * @see https://react-redux-firebase.com/api/ReactReduxFirebaseProvider.html + * @see https://react-redux-firebase.com/api/docs/ReactReduxFirebaseProvider.html */ function ReactReduxFirebaseProvider(props = {}) { const { diff --git a/src/ReduxFirestoreContext.js b/src/ReduxFirestoreContext.js index e8cc01f74..de2629686 100644 --- a/src/ReduxFirestoreContext.js +++ b/src/ReduxFirestoreContext.js @@ -1,7 +1,7 @@ import { createContext } from 'react' /** - * Context for extended firebase instance created + * @description Context for extended firebase instance created * by react-redux-firebase */ const ReduxFirestoreContext = createContext(null) diff --git a/src/ReduxFirestoreProvider.js b/src/ReduxFirestoreProvider.js index 41386c909..24c93b020 100644 --- a/src/ReduxFirestoreProvider.js +++ b/src/ReduxFirestoreProvider.js @@ -4,7 +4,7 @@ import ReduxFirestoreContext from './ReduxFirestoreContext' import createFirebaseInstance from './createFirebaseInstance' /** - * Provider for context containing extended firestore instance created + * @description Provider for context containing extended firestore instance created * by react-redux-firebase * @param {object} props - Component props * @param {object} props.config - react-redux-firebase config @@ -14,7 +14,7 @@ import createFirebaseInstance from './createFirebaseInstance' * @param {Function} props.createFirestoreInstance - Function for creating * extended firestore instance * @returns {React.Context.Provider} Provider for redux-firestore context - * @see https://react-redux-firebase.com/api/ReduxFirestoreProvider.html + * @see https://react-redux-firebase.com/docs/api/ReduxFirestoreProvider.html */ function ReduxFirestoreProvider(props = {}) { const { diff --git a/src/createFirebaseInstance.js b/src/createFirebaseInstance.js index 8e3eff032..2182c3ff1 100644 --- a/src/createFirebaseInstance.js +++ b/src/createFirebaseInstance.js @@ -70,14 +70,13 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { } /** - * Sets data to Firebase. More info available in - * [the docs](https://react-redux-firebase.com/api/props-firebase.html#set). + * Sets data to Firebase. * @param {string} path - Path to location on Firebase which to set * @param {object|string|boolean|number} value - Value to write to Firebase * @param {Function} onComplete - Function to run on complete (`not required`) * @returns {Promise} Containing reference snapshot * @example Basic - * @see https://react-redux-firebase.com/api/firebaseInstance.html#set + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#set * import React, { Component } from 'react' * import PropTypes from 'prop-types' * import { firebaseConnect } from 'react-redux-firebase' @@ -100,22 +99,23 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * Sets data to Firebase along with meta data. Currently, * this includes createdAt and createdBy. *Warning* using this function * may have unintented consequences (setting createdAt even if data already - * exists). More info available in [the docs](https://react-redux-firebase.com/api/props-firebase.html#update). + * exists). * @param {string} path - Path to location on Firebase which to set * @param {object|string|boolean|number} value - Value to write to Firebase * @param {Function} onComplete - Function to run on complete (`not required`) * @returns {Promise} Containing reference snapshot + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#update */ const setWithMeta = (path, value, onComplete) => withMeta('set', path, value, onComplete) /** - * Pushes data to Firebase. More info - * available in [the docs](https://react-redux-firebase.com/api/props-firebase.html#push). + * Pushes data to Firebase. * @param {string} path - Path to location on Firebase which to push * @param {object|string|boolean|number} value - Value to push to Firebase * @param {Function} onComplete - Function to run on complete (`not required`) * @returns {Promise} Containing reference snapshot + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#push * @example Basic * import React from 'react' * import PropTypes from 'prop-types' @@ -138,19 +138,19 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { /** * Pushes data to Firebase along with meta data. Currently, - * this includes createdAt and createdBy. More info - * available in [the docs](https://react-redux-firebase.com/api/props-firebase.html#pushWithMeta). + * this includes createdAt and createdBy. * @param {string} path - Path to location on Firebase which to set * @param {object|string|boolean|number} value - Value to write to Firebase * @param {Function} onComplete - Function to run on complete (`not required`) * @returns {Promise} Containing reference snapshot + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#pushwithmeta */ const pushWithMeta = (path, value, onComplete) => withMeta('push', path, value, onComplete) /** * Updates data on Firebase and sends new data. More info - * available in [the docs](https://react-redux-firebase.com/api/props-firebase.html#update). + * available in [the docs](https://react-redux-firebase.com/docs/api/firebaseInstance.html#update). * @param {string} path - Path to location on Firebase which to update * @param {object|string|boolean|number} value - Value to update to Firebase * @param {Function} onComplete - Function to run on complete (`not required`) @@ -182,12 +182,12 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { /** * Updates data on Firebase along with meta. *Warning* * using this function may have unintented consequences (setting - * createdAt even if data already exists). More info available - * in [the docs](https://react-redux-firebase.com/api/props-firebase.html#updateWithMeta). + * createdAt even if data already exists). * @param {string} path - Path to location on Firebase which to update * @param {object|string|boolean|number} value - Value to update to Firebase * @param {Function} onComplete - Function to run on complete (`not required`) * @returns {Promise} Containing reference snapshot + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#updatewithmeta */ const updateWithMeta = (path, value, onComplete) => withMeta('update', path, value, onComplete) @@ -197,11 +197,11 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * seperate action is not dispatched unless `dispatchRemoveAction: true` is * provided to config on store creation. That means that a listener must * be attached in order for state to be updated when calling remove. - * More info available in [the docs](https://react-redux-firebase.com/api/props-firebase.html#remove). * @param {string} path - Path to location on Firebase which to remove * @param {Function} onComplete - Function to run on complete (`not required`) * @param {Function} options - Options object * @returns {Promise} Containing reference snapshot + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#remove * @example Basic * import React from 'react' * import PropTypes from 'prop-types' @@ -226,11 +226,11 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * Sets data to Firebase only if the path does not already * exist, otherwise it rejects. Internally uses a Firebase transaction to * prevent a race condition between seperate clients calling uniqueSet. - * More info available in [the docs](https://react-redux-firebase.com/api/props-firebase.html#uniqueSet). * @param {string} path - Path to location on Firebase which to set * @param {object|string|boolean|number} value - Value to write to Firebase * @param {Function} onComplete - Function to run on complete (`not required`) * @returns {Promise} Containing reference snapshot + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#uniqueset * @example Basic * import React, { Component } from 'react' * import PropTypes from 'prop-types' @@ -263,7 +263,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { /** * Upload a file to Firebase Storage with the option to store * its metadata in Firebase Database. More info available - * in [the docs](https://react-redux-firebase.com/api/props-firebase.html#uploadFile). + * in [the docs](). * @param {string} path - Path to location on Firebase which to set * @param {File} file - File object to upload (usually first element from * array output of select-file or a drag/drop `onDrop`) @@ -273,6 +273,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * @param {object} options.metdata - Metadata for the file (passed as second * argument to storage.put calls) * @returns {Promise} Containing the File object + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#uploadfile */ const uploadFile = (path, file, dbPath, options) => storageActions.uploadFile(dispatch, firebase, { @@ -284,8 +285,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { /** * Upload multiple files to Firebase Storage with the option - * to store their metadata in Firebase Database. More info available - * in [the docs](https://react-redux-firebase.com/api/props-firebase.html#uploadFiles). + * to store their metadata in Firebase Database. * @param {string} path - Path to location on Firebase which to set * @param {Array} files - Array of File objects to upload (usually from * a select-file or a drag/drop `onDrop`) @@ -293,6 +293,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * @param {object} options - Options * @param {string} options.name - Name of the file * @returns {Promise} Containing an array of File objects + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#uploadfiles */ const uploadFiles = (path, files, dbPath, options) => storageActions.uploadFiles(dispatch, firebase, { @@ -304,11 +305,11 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { /** * Delete a file from Firebase Storage with the option to - * remove its metadata in Firebase Database. More info available - * in [the docs](https://react-redux-firebase.com/api/props-firebase.html#deleteFile). + * remove its metadata in Firebase Database. * @param {string} path - Path to location on Firebase which to set * @param {string} dbPath - Database path to place uploaded file metadata * @returns {Promise} Containing the File object + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#deletefile */ const deleteFile = (path, dbPath) => storageActions.deleteFile(dispatch, firebase, { path, dbPath }) @@ -316,7 +317,6 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { /** * Watch event. **Note:** this method is used internally * so examples have not yet been created, and it may not work as expected. - * More info available in [the docs](https://react-redux-firebase.com/api/props-firebase.html#watchEvent). * @param {string} type - Type of watch event * @param {string} path - Path to location on Firebase which to set listener * @param {string} storeAs - Name of listener results within redux store @@ -324,6 +324,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * @param {Array} options.queryParams - List of parameters for the query * @param {string} options.queryId - id of the query * @returns {Promise|void} Results of calling watch event + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#watchevent */ const watchEvent = (type, path, storeAs, options = {}) => queryActions.watchEvent(firebase, dispatch, { @@ -336,12 +337,13 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { /** * Unset a listener watch event. **Note:** this method is used * internally so examples have not yet been created, and it may not work - * as expected. More info available in [the docs](https://react-redux-firebase.com/api/props-firebase.html#unwatchevent). + * as expected. * @param {string} type - Type of watch event * @param {string} path - Path to location on Firebase which to unset listener * @param {string} queryId - Id of the listener * @param {object} options - Event options object * @returns {void} + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#unwatchevent */ const unWatchEvent = (type, path, queryId, options = {}) => queryActions.unWatchEvent(firebase, dispatch, { @@ -378,7 +380,8 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { /** * Logs user into Firebase. For examples, visit the - * [auth section of the docs](/docs/auth.md) + * [auth section of the docs](https://react-redux-firebase.com/docs/auth.html) or the + * [auth recipes section](https://react-redux-firebase.com/docs/recipes/auth.html). * @param {object} credentials - Credentials for authenticating * @param {string} credentials.provider - External provider (google | * facebook | twitter) @@ -387,6 +390,8 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * @param {string} credentials.email - Credentials for authenticating * @param {string} credentials.password - Credentials for authenticating (only used with email) * @returns {Promise} Containing user's auth data + * @see https://react-redux-firebase.com/docs/auth.html#logincredentials + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#login */ const login = credentials => authActions.login(dispatch, firebase, credentials) @@ -404,6 +409,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * Logs user out of Firebase and empties firebase state from * redux store * @returns {Promise} Resolves after logout is complete + * @see https://react-redux-firebase.com/docs/auth.html#logout */ const logout = () => authActions.logout(dispatch, firebase) @@ -416,6 +422,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * @param {string} credentials.password - Credentials for authenticating (only used with email) * @param {object} profile - Data to include within new user profile * @returns {Promise} Containing user's auth data + * @see https://react-redux-firebase.com/docs/auth.html#createuser */ const createUser = (credentials, profile) => authActions.createUser(dispatch, firebase, credentials, profile) @@ -425,6 +432,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * @param {object} credentials - Credentials for authenticating * @param {string} credentials.email - Credentials for authenticating * @returns {Promise} Resolves after password reset email is sent + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#resetpassword */ const resetPassword = credentials => authActions.resetPassword(dispatch, firebase, credentials) @@ -434,6 +442,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * @param {string} code - Password reset code to verify * @param {string} password - New Password to confirm reset to * @returns {Promise} Resolves after password reset is confirmed + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#confirmpasswordreset */ const confirmPasswordReset = (code, password) => authActions.confirmPasswordReset(dispatch, firebase, code, password) @@ -443,6 +452,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * email is valid * @param {string} code - Password reset code to verify * @returns {Promise} Containing user auth info + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#verifypasswordreset */ const verifyPasswordResetCode = code => authActions.verifyPasswordResetCode(dispatch, firebase, code) @@ -461,6 +471,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * @param {boolean} [options.merge=true] - Whether or not to use merge when * setting profile. Note: Only used when updating profile on Firestore * @returns {Promise} Returns after updating profile within database + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#updateprofile */ const updateProfile = (profileUpdate, options) => authActions.updateProfile(dispatch, firebase, profileUpdate, options) @@ -470,6 +481,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * @param {object} authUpdate - Update to be auth object * @param {boolean} updateInProfile - Update in profile * @returns {Promise} Returns after updating auth profile + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#updateauth */ const updateAuth = (authUpdate, updateInProfile) => authActions.updateAuth(dispatch, firebase, authUpdate, updateInProfile) @@ -479,6 +491,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * @param {string} newEmail - Update to be auth object * @param {boolean} updateInProfile - Update in profile * @returns {Promise} Resolves after email is updated in user's auth + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#updateemail */ const updateEmail = (newEmail, updateInProfile) => authActions.updateEmail(dispatch, firebase, newEmail, updateInProfile) @@ -486,6 +499,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { /** * Reload user's auth object. Must be authenticated. * @returns {Promise} Resolves after reloading firebase auth + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#reloadauth */ const reloadAuth = () => authActions.reloadAuth(dispatch, firebase) @@ -493,6 +507,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * Links the user account with the given credentials. * @param {firebase.auth.AuthCredential} credential - The auth credential * @returns {Promise} Resolves after linking auth with a credential + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#linkwithcredential */ const linkWithCredential = credential => authActions.linkWithCredential(dispatch, firebase, credential) @@ -505,6 +520,7 @@ export default function createFirebaseInstance(firebase, configs, dispatch) { * authenticates and does profile handling. * @param {firebase.auth.ConfirmationResult} credential - The auth credential * @returns {Promise} + * @see https://react-redux-firebase.com/docs/api/firebaseInstance.html#signinwithphonenumber */ /** diff --git a/src/firebaseConnect.js b/src/firebaseConnect.js index 0629b71e7..b68264a44 100644 --- a/src/firebaseConnect.js +++ b/src/firebaseConnect.js @@ -8,14 +8,14 @@ import ReactReduxFirebaseContext from './ReactReduxFirebaseContext' /** * @augments React.Component - * React Higher Order Component that automatically listens/unListens to + * @description React Higher Order Component that automatically listens/unListens to * Firebase Real Time Database on mount/unmount of the component. This uses * React's Component Lifecycle hooks. * @param {Array|Function} queriesConfig - Array of objects or strings for paths to sync * from Firebase. Can also be a function that returns the array. The function * is passed the current props and the firebase object. * @returns {Function} - that accepts a component to wrap and returns the wrapped component - * @see http://react-redux-firebase.com/api/firebaseConnect.html + * @see https://react-redux-firebase.com/docs/api/firebaseConnect.html * @example Basic * // props.firebase set on App component as firebase object with helpers * import { firebaseConnect } from 'react-redux-firebase' diff --git a/src/firestoreConnect.js b/src/firestoreConnect.js index 08e207aa4..f01ef06a6 100644 --- a/src/firestoreConnect.js +++ b/src/firestoreConnect.js @@ -8,7 +8,7 @@ import ReactReduxFirebaseContext from './ReactReduxFirebaseContext' /** * @augments React.Component - * Higher Order Component that automatically listens/unListens + * @description Higher Order Component that automatically listens/unListens * to provided Cloud Firestore paths using React's Lifecycle hooks. Make sure you * have required/imported Cloud Firestore, including it's reducer, before * attempting to use. **Note** Populate is not yet supported. @@ -17,7 +17,7 @@ import ReactReduxFirebaseContext from './ReactReduxFirebaseContext' * is passed the current props and the firebase object. * @returns {Function} - Function which accepts a component to wrap and returns the * wrapped component - * @see http://react-redux-firebase.com/api/firestoreConnect.html + * @see https://react-redux-firebase.com/docs/api/firestoreConnect.html * @example Basic * // props.firebase set on App component as firebase object with helpers * import { firestoreConnect } from 'react-redux-firebase' diff --git a/src/helpers.js b/src/helpers.js index 268cf5496..856eb89a5 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -286,7 +286,7 @@ function populateChild(state, child, p) { * // each todo has child 'owner' populated from matching uid in 'users' root * // for loading un-populated todos use state.firebase.data.todos * todos: populate(state.firebase, 'todos', populates), - * }) + * })) * ) * * export default enhance(SomeComponent) diff --git a/src/useFirebase.js b/src/useFirebase.js index afd17605d..a232688ff 100644 --- a/src/useFirebase.js +++ b/src/useFirebase.js @@ -3,14 +3,14 @@ import ReactReduxFirebaseContext from './ReactReduxFirebaseContext' /** * @name useFirebase - * React hook that provides `firebase` object. + * @description React hook that provides `firebase` object. * Firebase is gathered from `store.firebase`, which is attached to store * by the store enhancer (`reactReduxFirebase`) during setup. * **NOTE**: This version of the Firebase library has extra methods, config, * and functionality which give it it's capabilities such as dispatching * actions. * @returns {object} - Extended Firebase instance - * @see https://react-redux-firebase.com/api/useFirebase.html + * @see https://react-redux-firebase.com/docs/api/useFirebase.html * @example Basic * import { useFirebase } from 'react-redux-firebase' * diff --git a/src/useFirebaseConnect.js b/src/useFirebaseConnect.js index 51d62d560..f2fb9e726 100644 --- a/src/useFirebaseConnect.js +++ b/src/useFirebaseConnect.js @@ -5,14 +5,15 @@ import { getEventsFromInput, invokeArrayQuery } from './utils' import useFirebase from './useFirebase' /** - * Hook that automatically listens/unListens to provided firebase paths + * @description Hook that automatically listens/unListens to provided firebase paths * using React's useEffect hook. * @param {object|string|Function|Array} queriesConfig - Object, string, or * array contains object or string for path to sync from Firebase or null if * hook doesn't need to sync. Can also be a function that returns an object, * a path string, or array of an object or a path string. - * @see https://react-redux-firebase.com/api/useFirebaseConnect.html + * @see https://react-redux-firebase.com/docs/api/useFirebaseConnect.html * @example Ordered Data + * import React from 'react' * import { useSelector } from 'react-redux' * import { useFirebaseConnect } from 'react-redux-firebase' * @@ -28,27 +29,27 @@ import useFirebase from './useFirebase' * ) * } * @example Data that depends on props + * import React from 'react' * import { compose } from 'redux' * import { useSelector } from 'react-redux' * import { useFirebaseConnect } from 'react-redux-firebase' * - * function Post({ postId }) { + * export default function Post({ postId }) { * useFirebaseConnect(`posts/${postId}`) // sync /posts/postId from firebase into redux - * const post = useSelector(({ firebase }) => state.firebase.ordered.posts && state.firebase.ordered.posts[postId]) + * const post = useSelector(({ firebase: { ordered: { posts } } }) => posts && posts[postId]) * return ( *

* {JSON.stringify(post, null, 2)} *
* ) * } - * - * export default enhance(Post) * @example Data that depends on props, an array as a query + * import React from 'react' * import { compose } from 'redux' * import { useSelector } from 'react-redux' * import { useFirebaseConnect, getVal } from 'react-redux-firebase' * - * function Post({ post, postId }) { + * export default function Post({ postId }) { * useFirebaseConnect([`posts/${postId}`], [postId]) // sync /posts/postId from firebase into redux * const post = useSelector(state => { * return state.firebase.ordered.posts && state.firebase.ordered.posts[postId] @@ -59,8 +60,6 @@ import useFirebase from './useFirebase' * * ) * } - * - * export default Post */ export default function useFirebaseConnect(queriesConfig) { const firebase = useFirebase() diff --git a/src/useFirestore.js b/src/useFirestore.js index e35900277..c184d1057 100644 --- a/src/useFirestore.js +++ b/src/useFirestore.js @@ -3,17 +3,17 @@ import ReduxFirestoreContext from './ReduxFirestoreContext' /** * @name useFirestore - * React hook that return firestore object. + * @description React hook that return firestore object. * Firestore instance is gathered from `store.firestore`, which is attached * to store by the store enhancer (`reduxFirestore`) during setup of * [`redux-firestore`](https://github.com/prescottprue/redux-firestore) * @returns {object} - Extended Firestore instance - * @see https://react-redux-firebase.com/api/useFirestore.html + * @see https://react-redux-firebase.com/docs/api/useFirestore.html * @example Basic * import React from 'react' * import { useFirestore } from 'react-redux-firebase' * - * function AddData({ firebase: { add } }) { + * export default function AddData({ firebase: { add } }) { * const firestore = useFirestore() * * function addTodo() { @@ -29,8 +29,6 @@ import ReduxFirestoreContext from './ReduxFirestoreContext' * * ) * } - * - * export default AddTodo */ export default function useFirestore() { return useContext(ReduxFirestoreContext) diff --git a/src/useFirestoreConnect.js b/src/useFirestoreConnect.js index 39c5e9690..734393ff6 100644 --- a/src/useFirestoreConnect.js +++ b/src/useFirestoreConnect.js @@ -4,21 +4,21 @@ import { invokeArrayQuery, getChanges } from './utils' import useFirestore from './useFirestore' /** - * React hook that automatically listens/unListens + * @description React hook that automatically listens/unListens * to provided Cloud Firestore paths. Make sure you have required/imported * Cloud Firestore, including it's reducer, before attempting to use. * **Note** Populate is not yet supported. * @param {object|string|Array|Function} queriesConfigs - An object, string, * or array of object or string for paths to sync from firestore. Can also be * a function that returns the object, string, or array of object or string. - * @see https://react-redux-firebase.com/api/useFirestoreConnect.html + * @see https://react-redux-firebase.com/docs/api/useFirestoreConnect.html * @example Basic * import React from 'react' * import { map } from 'lodash' * import { useSelector } from 'react-redux' * import { useFirebaseConnect } from 'react-redux-firebase' * - * function TodosList() { + * export default function TodosList() { * useFirebaseConnect('todos') // sync todos collection from Firestore into redux * const todos = useSelector(state => state.firebase.data.todos) * return ( @@ -29,28 +29,21 @@ import useFirestore from './useFirestore' * * ) * } - * export default TodosList * @example Object as query * import React, { useMemo } from 'react' * import { get } from 'lodash' * import { connect } from 'react-redux' * import { useFirebaseConnect } from 'react-redux-firebase' * - * function TodoItem({ todoId, todoData }) { + * export default function TodoItem({ todoId }) { * useFirebaseConnect(() => ({ * collection: 'todos', * doc: todoId - * }), [todoId]) // include dependency in the hook + * })) + * const todo = useSelector(({ firebase: { data } }) => data.todos && data.todos[todoId]) * * return
{JSON.stringify(todoData)}
* } - * - * // pass todo data from redux as props.todosList - * export default compose( - * connect((state) => ({ - * todoData: get(state, ['firestore', 'data', 'todos', todoId]) - * }) - * )(TodoItem) */ export default function useFirestoreConnect(queriesConfigs) { const firestore = useFirestore() diff --git a/src/withFirebase.js b/src/withFirebase.js index 775078bb0..48203d759 100644 --- a/src/withFirebase.js +++ b/src/withFirebase.js @@ -5,7 +5,7 @@ import ReactReduxFirebaseContext from './ReactReduxFirebaseContext' /** * @augments React.Component - * Higher Order Component that provides `firebase` and + * @description Higher Order Component that provides `firebase` and * `dispatch` as a props to React Components. Firebase is gathered from * `store.firebase`, which is attached to store by the store enhancer * (`reactReduxFirebase`) during setup. @@ -15,7 +15,7 @@ import ReactReduxFirebaseContext from './ReactReduxFirebaseContext' * @param {React.Component} WrappedComponent - React component to wrap * @returns {Function} - Which accepts a component to wrap and returns the * wrapped component - * @see http://react-redux-firebase.com/api/withFirebase.html + * @see http://react-redux-firebase.com/docs/api/withFirebase.html * @example Basic * import React from 'react' * import { withFirebase } from 'react-redux-firebase' diff --git a/src/withFirestore.js b/src/withFirestore.js index 9b62bd630..ea5912509 100644 --- a/src/withFirestore.js +++ b/src/withFirestore.js @@ -6,7 +6,7 @@ import ReduxFirestoreContext from './ReduxFirestoreContext' /** * @augments React.Component - * Higher Order Component that attaches `firestore`, `firebase` + * @description Higher Order Component that attaches `firestore`, `firebase` * and `dispatch` as props to React Components. Firebase instance is gathered * from `store.firestore`, which is attached to store by the store enhancer * (`reduxFirestore`) during setup of @@ -14,7 +14,7 @@ import ReduxFirestoreContext from './ReduxFirestoreContext' * @param {React.Component} WrappedComponent - React component to wrap * @returns {Function} - Which accepts a component to wrap and returns the * wrapped component - * @see http://react-redux-firebase.com/api/withFirestore.html + * @see http://react-redux-firebase.com/docs/api/withFirestore.html * @example Basic * import React from 'react' * import { withFirestore } from 'react-redux-firebase'