redux-persist-sensitive-storage
Version:
redux-persist storage engine for react-native-sensitive-info
67 lines (47 loc) • 2.62 kB
Markdown
# redux-persist-sensitive-storage
[](https://www.npmjs.com/package/redux-persist-sensitive-storage)
[](https://circleci.com/gh/CodingZeal/redux-persist-sensitive-storage)
[](https://opensource.org/licenses/MIT)
Storage engine to use [react-native-sensitive-info](https://github.com/mCodex/react-native-sensitive-info) with [redux-persist](https://github.com/rt2zz/redux-persist).
react-native-sensitive-info manages all data stored in Android Shared Preferences and iOS Keychain.
**NOTE:** Android Shared Preferences are not secure, but there is [a branch of react-native-sensitive-info](https://github.com/mCodex/react-native-sensitive-info/tree/keystore) that uses the Android keystore instead of shared preferences. You can use that branch with redux-persist-sensitive-storage if you prefer.
## Installation
You can install this package using either `yarn` or `npm`. You will also need to install and link [react-native-sensitive-info](https://github.com/mCodex/react-native-sensitive-info).
Using Yarn:
```
yarn add redux-persist-sensitive-storage react-native-sensitive-info
react-native link react-native-sensitive-info
```
Using npm:
```
npm install --save redux-persist-sensitive-storage react-native-sensitive-info
react-native link react-native-sensitive-info
```
## Usage
To use redux-persist-sensitive-storage, configure redux-persist according to [its documentation](https://github.com/rt2zz/redux-persist#redux-persist).
Modify the `persistStore` call as follows:
```js
import createSensitiveStorage from "redux-persist-sensitive-storage";
// ...
persistStore(store, { storage: createSensitiveStorage(options) });
```
`options` is optional and are used to configure the keychain service (iOS) and shared preferences name (Android) that react-native-sensitive-info uses. See [the documentation](https://github.com/mCodex/react-native-sensitive-info#methods) for more information.
Here's a full example:
```js
import { compose, applyMiddleware, createStore } from "redux";
import { persistStore, autoRehydrate } from "redux-persist";
import createSensitiveStorage from "redux-persist-sensitive-storage";
const store = createStore(
reducer,
compose(
applyMiddleware(...),
autoRehydrate()
)
);
persistStore(store, {
storage: createSensitiveStorage({
keychainService: "myKeychain",
sharedPreferencesName: "mySharedPrefs"
});
);
```