@robinbobin/react-native-preferences
v2.0.0
Published
Persistent unencrypted storage for application preferences.
Downloads
97
Maintainers
Readme
A persistent unencrypted storage for application preferences.
Installation
npm i @robinbobin/react-native-preferences
npm i @react-native-async-storage/async-storage@^1.14.1
My package uses @react-native-async-storage/async-storage
to manage preference values, and that package needs linking. If it's specified as a dependency of @robinbobin/react-native-preferences
it's not added to an app's package.json
as a dependency and is not linked. Hence the need for manual installation.
Usage
Example:
import {
StringPreference,
usePreferences
} from "@robinbobin/react-native-preferences";
function App() {
...
const onLoad = useCallback(() => {
console.log(preferences.pref.name, preferences.pref.value);
preferences.pref.value = "peakaboo";
console.log(preferences.pref.name, preferences.pref.value);
}, []);
const preferences = usePreferences([
new StringPreference("pref", "for you")
], onLoad);
...
}
- Preferences
- Preference
- BooleanPreference
- JsonPreference
- NumberPreference
- StringPreference
- usePreferences()
Preferences
An instance of this class stores all the preferences. See usePreferences()
.
A boolean property, returning
true
if the properties have been loaded andfalse
otherwise.Gets a preference by name. Throws an
Error
instance if the preferences haven't been loaded yet or if there's no preference with that name.Generally it's easier to use the
preferences.preferenceName
syntax for the same purpose. This function can be used to access preferences with reserved names (names of properties / methods of this class and names starting with an underscore).Loads the preferences. This function is invoked internally by
usePreferences()
.
Preference
This class serves as the base class for the classes that manage preference values (NumberPreference
, StringPreference
, etc). It shouldn't be instantiated directly.
Takes 3 parameters:
name
– The name of the preference. See alsoPreferences.get()
.defaultValue
– A default value for the preference, used only on load if no value has been stored before.valueTypes
– Valid value types. Can beundefined
, one type or an array of types.
Checks the validity of the passed value. If the value is deemed invalid, a
TypeError
is thrown.A string property, returning this preference name.
Returns a value this preference can manage, being passed a string. The following must stand true:
- The parameter must be a valid string representation of the value.
- If the parameter is
null
this function must returnnull
.
Stores the preference value in a persistent storage. This method is invoked internally by the
value
setter, but has to be called manually for "compound" preferences likeJsonPreference
.Returns a string representation of the preference value.
Returns a human-readable representation of this preference.
A getter / setter for the preference value. When setting a value, its validity is checked with
assertValidity()
.
BooleanPreference
A class to manage boolean values. The default value is false
, if not specified.
JsonPreference
A class to manage object values ({}
). The default value is an empty object, if not specified. Please, don't forget to call save()
when changing the object:
preferences.json.value.delay = 10;
preferences.json.save();
NumberPreference
A class to manage number values. The default value is zero, if not specified.
StringPreference
A class to manage string values. The default value is an empty string, if not specified.
usePreferences()
This function does the following:
- Creates an instance of
Preferences
, initializing it with the passed inpreferences
. - Loads the preferences.
- Returns the created instance.
The return value of this function needn't be specified as a dependency of React.useCallback()
, etc.
This function takes 3 parameters:
preferences
– an array of preferences (instances of classes derived fromPreference
).onLoad
– a callback that is invoked when the preferences are loaded. It can return a clean-up function or aPromise
, resolving to a clean-up function. In this case this clean-up function will be invoked instead ofonUnload()
.onUnload
– (optional) a callback that is invoked on unmount.
Version history
Version number|Changes
-|-
v1.4.0|usePreferences()
: onLoad()
can return a clean-up function, invoked instead of onUnload()
.
v1.3.0|BooleanPreference
added.
v1.2.0|1. usePreferences()
: onUnload
added.2. Default values for JsonPreference
, NumberPreference
and StringPreference
.
v1.1.0|1. JsonPreference
added.2. Preference.save()
added.
v1.0.3|Initial release.
Written with StackEdit.