diff --git a/docs/reference/README.md b/docs/reference/README.md index fa4e3cd3..a206dabf 100644 --- a/docs/reference/README.md +++ b/docs/reference/README.md @@ -14,7 +14,6 @@ ReactFire reference docs - [index](modules/index.md) - [performance](modules/performance.md) - [remote-config](modules/remote_config.md) -- [remote-config/getValue](modules/remote_config_getValue.md) - [sdk](modules/sdk.md) - [storage](modules/storage.md) - [useObservable](modules/useObservable.md) diff --git a/docs/reference/modules/remote_config.md b/docs/reference/modules/remote_config.md index 54b3641a..ef4baeee 100644 --- a/docs/reference/modules/remote_config.md +++ b/docs/reference/modules/remote_config.md @@ -16,7 +16,7 @@ ### useRemoteConfigAll -▸ **useRemoteConfigAll**(`key`): [`ObservableStatus`](../interfaces/useObservable.ObservableStatus.md)<[`AllParameters`](remote_config_getValue.md#allparameters)\> +▸ **useRemoteConfigAll**(`key`): [`ObservableStatus`](../interfaces/useObservable.ObservableStatus.md)<`AllParameters`\> Convience method similar to useRemoteConfigValue. Returns allRemote Config parameters. @@ -28,11 +28,11 @@ Convience method similar to useRemoteConfigValue. Returns allRemote Config param #### Returns -[`ObservableStatus`](../interfaces/useObservable.ObservableStatus.md)<[`AllParameters`](remote_config_getValue.md#allparameters)\> +[`ObservableStatus`](../interfaces/useObservable.ObservableStatus.md)<`AllParameters`\> #### Defined in -[src/remote-config/index.tsx:78](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config/index.tsx#L78) +[src/remote-config.tsx:66](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config.tsx#L66) ___ @@ -54,7 +54,7 @@ Convience method similar to useRemoteConfigValue. Returns a `boolean` from a Rem #### Defined in -[src/remote-config/index.tsx:69](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config/index.tsx#L69) +[src/remote-config.tsx:58](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config.tsx#L58) ___ @@ -76,7 +76,7 @@ Convience method similar to useRemoteConfigValue. Returns a `number` from a Remo #### Defined in -[src/remote-config/index.tsx:60](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config/index.tsx#L60) +[src/remote-config.tsx:50](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config.tsx#L50) ___ @@ -98,7 +98,7 @@ Convience method similar to useRemoteConfigValue. Returns a `string` from a Remo #### Defined in -[src/remote-config/index.tsx:51](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config/index.tsx#L51) +[src/remote-config.tsx:42](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config.tsx#L42) ___ @@ -121,4 +121,4 @@ Remote Config Value. #### Defined in -[src/remote-config/index.tsx:42](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config/index.tsx#L42) +[src/remote-config.tsx:34](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config.tsx#L34) diff --git a/docs/reference/modules/remote_config_getValue.md b/docs/reference/modules/remote_config_getValue.md deleted file mode 100644 index a27faa49..00000000 --- a/docs/reference/modules/remote_config_getValue.md +++ /dev/null @@ -1,135 +0,0 @@ -[ReactFire reference docs](../README.md) / remote-config/getValue - -# Module: remote-config/getValue - -## Table of contents - -### Type aliases - -- [AllParameters](remote_config_getValue.md#allparameters) - -### Functions - -- [getAll](remote_config_getValue.md#getall) -- [getBoolean](remote_config_getValue.md#getboolean) -- [getNumber](remote_config_getValue.md#getnumber) -- [getString](remote_config_getValue.md#getstring) -- [getValue](remote_config_getValue.md#getvalue) - -## Type aliases - -### AllParameters - -Ƭ **AllParameters**: `Object` - -#### Index signature - -▪ [key: `string`]: `RemoteConfigValue` - -#### Defined in - -[src/remote-config/getValue.tsx:13](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config/getValue.tsx#L13) - -## Functions - -### getAll - -▸ **getAll**(`remoteConfig`): `Observable`<[`AllParameters`](remote_config_getValue.md#allparameters)\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `remoteConfig` | `RemoteConfig` | - -#### Returns - -`Observable`<[`AllParameters`](remote_config_getValue.md#allparameters)\> - -#### Defined in - -[src/remote-config/getValue.tsx:54](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config/getValue.tsx#L54) - -___ - -### getBoolean - -▸ **getBoolean**(`remoteConfig`, `key`): `Observable`<`boolean`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `remoteConfig` | `RemoteConfig` | -| `key` | `string` | - -#### Returns - -`Observable`<`boolean`\> - -#### Defined in - -[src/remote-config/getValue.tsx:49](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config/getValue.tsx#L49) - -___ - -### getNumber - -▸ **getNumber**(`remoteConfig`, `key`): `Observable`<`number`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `remoteConfig` | `RemoteConfig` | -| `key` | `string` | - -#### Returns - -`Observable`<`number`\> - -#### Defined in - -[src/remote-config/getValue.tsx:44](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config/getValue.tsx#L44) - -___ - -### getString - -▸ **getString**(`remoteConfig`, `key`): `Observable`<`string`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `remoteConfig` | `RemoteConfig` | -| `key` | `string` | - -#### Returns - -`Observable`<`string`\> - -#### Defined in - -[src/remote-config/getValue.tsx:39](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config/getValue.tsx#L39) - -___ - -### getValue - -▸ **getValue**(`remoteConfig`, `key`): `Observable`<`Value`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `remoteConfig` | `RemoteConfig` | -| `key` | `string` | - -#### Returns - -`Observable`<`Value`\> - -#### Defined in - -[src/remote-config/getValue.tsx:34](https://github.com/FirebaseExtended/reactfire/blob/main/src/remote-config/getValue.tsx#L34) diff --git a/src/remote-config/index.tsx b/src/remote-config.tsx similarity index 67% rename from src/remote-config/index.tsx rename to src/remote-config.tsx index 35f9edd2..97376fb8 100644 --- a/src/remote-config/index.tsx +++ b/src/remote-config.tsx @@ -1,17 +1,12 @@ -import { useRemoteConfig } from '../'; -import { useObservable, ObservableStatus } from '../useObservable'; -import { getValue, getString, getBoolean, getNumber, getAll, AllParameters } from './getValue'; +import { useRemoteConfig } from './'; +import { useObservable, ObservableStatus } from './useObservable'; +import { getValue, getString, getBoolean, getNumber, getAll, AllParameters } from 'rxfire/remote-config'; import { Observable } from 'rxjs'; import type { RemoteConfig, Value as RemoteConfigValue } from 'firebase/remote-config'; type Getter$ = (remoteConfig: RemoteConfig, key: string) => Observable; -interface RemoteConfigWithPrivate extends RemoteConfig { - // This is a private API, assume optional - _storage?: { appName: string }; -} - /** * Helper function to construct type safe functions. Since Remote Config has * methods that return different types for values, we need to be extra safe @@ -23,9 +18,7 @@ interface RemoteConfigWithPrivate extends RemoteConfig { function useRemoteConfigValue_INTERNAL(key: string, getter: Getter$): ObservableStatus { const remoteConfig = useRemoteConfig(); - // INVESTIGATE need to use a public API to get at the app name, one doesn't appear to exist... - // we might need to iterate over the Firebase apps and check for remoteConfig equality? this works for now - const appName = (remoteConfig as RemoteConfigWithPrivate)._storage?.appName; + const appName = remoteConfig.app.name; const $value = getter(remoteConfig, key); const observableId = `remoteConfig:${key}:${getter.name}:${appName}`; @@ -37,7 +30,6 @@ function useRemoteConfigValue_INTERNAL(key: string, getter: Getter$): Obse * Remote Config Value. * * @param key The parameter key in Remote Config - * @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load. */ export function useRemoteConfigValue(key: string): ObservableStatus { return useRemoteConfigValue_INTERNAL(key, getValue); @@ -46,7 +38,6 @@ export function useRemoteConfigValue(key: string): ObservableStatus { return useRemoteConfigValue_INTERNAL(key, getString); @@ -55,7 +46,6 @@ export function useRemoteConfigString(key: string): ObservableStatus { /** * Convience method similar to useRemoteConfigValue. Returns a `number` from a Remote Config parameter. * @param key The parameter key in Remote Config - * @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load. */ export function useRemoteConfigNumber(key: string): ObservableStatus { return useRemoteConfigValue_INTERNAL(key, getNumber); @@ -64,7 +54,6 @@ export function useRemoteConfigNumber(key: string): ObservableStatus { /** * Convience method similar to useRemoteConfigValue. Returns a `boolean` from a Remote Config parameter. * @param key The parameter key in Remote Config - * @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load. */ export function useRemoteConfigBoolean(key: string): ObservableStatus { return useRemoteConfigValue_INTERNAL(key, getBoolean); @@ -73,7 +62,6 @@ export function useRemoteConfigBoolean(key: string): ObservableStatus { /** * Convience method similar to useRemoteConfigValue. Returns allRemote Config parameters. * @param key The parameter key in Remote Config - * @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load. */ export function useRemoteConfigAll(key: string): ObservableStatus { return useRemoteConfigValue_INTERNAL(key, getAll); diff --git a/src/remote-config/getValue.tsx b/src/remote-config/getValue.tsx deleted file mode 100644 index 020636f0..00000000 --- a/src/remote-config/getValue.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { Observable } from 'rxjs'; -import { - ensureInitialized, - getValue as rcGetValue, - getString as rcGetString, - getNumber as rcGetNumber, - getBoolean as rcGetBoolean, - getAll as rcGetAll, -} from 'firebase/remote-config'; - -import type { RemoteConfig, Value as RemoteConfigValue } from 'firebase/remote-config'; - -export type AllParameters = { - [key: string]: RemoteConfigValue; -}; - -interface ParameterSettings { - remoteConfig: RemoteConfig; - key: string; - getter: (key: string) => T; -} - -// TODO(davideast): Replace with RxFire functions when they land -function parameter$({ remoteConfig, key, getter }: ParameterSettings): Observable { - return new Observable((subscriber) => { - ensureInitialized(remoteConfig).then(() => { - // 'this' for the getter loses context in the next() - // call, so it needs to be bound. - subscriber.next(getter.bind(remoteConfig)(key)); - }); - }); -} - -export function getValue(remoteConfig: RemoteConfig, key: string) { - const getter = () => rcGetValue(remoteConfig, key); - return parameter$({ remoteConfig, key, getter }); -} - -export function getString(remoteConfig: RemoteConfig, key: string) { - const getter = () => rcGetString(remoteConfig, key); - return parameter$({ remoteConfig, key, getter }); -} - -export function getNumber(remoteConfig: RemoteConfig, key: string) { - const getter = () => rcGetNumber(remoteConfig, key); - return parameter$({ remoteConfig, key, getter }); -} - -export function getBoolean(remoteConfig: RemoteConfig, key: string) { - const getter = () => rcGetBoolean(remoteConfig, key); - return parameter$({ remoteConfig, key, getter }); -} - -export function getAll(remoteConfig: RemoteConfig) { - const getter = () => rcGetAll(remoteConfig); - // No key is needed for getAll() - return parameter$({ remoteConfig, key: '', getter }); -}