Add remote config documentation

This commit is contained in:
Elliot Hesp 2017-05-23 11:49:40 +01:00
parent 22a6ac1b07
commit b9b8e9062e
1 changed files with 136 additions and 0 deletions

136
docs/modules/config.md Normal file
View File

@ -0,0 +1,136 @@
# Remote Config
?> Remote Config is not available on the web SDK. Please read the [documentation](https://firebase.google.com/docs/remote-config) on when & why Remote Config benefits your app.
## API
### enableDeveloperMode()
Enable Remote Config developer mode to allow for frequent refreshes of the cache.
```js
firebase.config().enableDeveloperMode();
```
### setDefaults(defaults: `Object`)
Sets default values for the app to use when accessing values. Any data fetched and activated will override any default values.
Any values in the defaults but not on Firebase will be untouched.
```js
firebase.config().setDefaults({
hasExperimentalFeature: false,
});
```
### fetch(): `Promise<String>`
Fetches the remote config data from Firebase, defined in the dashboard. To have fetched data available in the active config, use
`activateFetched`.
// TODO Errors
```js
firebase.config()
.fetch()
.then(() => {
console.log('Successfully fetched data');
})
.catch((error) => {
console.error('Unable to fetch remote config data: ', error);
});
```
### fetchWithExpirationDuration(duration: `int`): `Promise<String>`
Same as `fetch`, however defines (in seconds) how long fetched data is available in the active config.
Default duration is 12 hours (43200 seconds)*[]:
```js
firebase.config()
.fetchWithExpirationDuration(1337)
.then(() => {
console.log('Successfully fetched data for 1337 seconds');
})
.catch((error) => {
console.error('Unable to fetch remote config data: ', error);
});
```
### activateFetched(): `Promise<Boolean>`
Moves fetched data in the apps active config. Always successfully resolves with a boolean value.
```js
firebase.config()
.activateFetched()
.then((success) => {
if (success) {
console.log('Successfully activated fetched config into active config');
} else {
console.log('No fetched config was found or fetched config is already active');
}
});
```
### getValue(key: `String`): `Promise<Object>`
Gets a config item by key. Returns an object containing source (default, remote or static) and val function.
```js
firebase.config()
.getValue('foobar')
.then((snapshot) => {
console.log('Got value from source: ', snapshot.source);
console.log('Value of foobar: ', snapshot.val());
})
.catch(console.error);
```
### getValues(keys: `Array<String>`): `Promise<Object>`
Gets multiple values by key. Returns an object of keys with the same object returned from `getValue`.
```js
firebase.config()
.getValues(['foobar', 'barbaz'])
.then((snapshot) => {
console.log('Value of foobar: ', snapshot.foobar.val());
console.log('Value of barbaz: ', snapshot.barbaz.val());
})
.catch(console.error);
```
## Usage
```js
if (__DEV__) {
firebase.config().enableDeveloperMode();
}
// Set default values
firebase.config().setDefaults({
hasExperimentalFeature: false,
});
firebase.remoteConfig.fetch()
.then(() => {
return firebase.remoteConfig().activateFetched();
})
.then((activated) => {
if (!activated) console.log('Fetched data not activated');
return firebase.remoteConfig().getValue('hasExperimentalFeature');
})
.then((snapshot) => {
const hasExperimentalFeature = snapshot.val();
if(hasExperimentalFeature) {
// enableSuperCoolFeature();
}
// continue booting app
})
.catch(console.error);
```