RIF Identity - Core reducer
npm i @rsksmart/rif-id-core-reducer
This reducer handles the state of RIF Identity core module.
Store different identity providers, used to digitally sign messages.
- Stores a mnemonic phrase
Setup the store:
import { configureStore } from '@reduxjs/toolkit'
import identityReducer from '@rsksmart/rif-id-core-reducer'
const store = configureStore({
reducer: identityReducer
})
Add providers:
import { addProvider } from '@rsksmart/rif-id-core-reducer/identityProvider'
const mnemonic1 = 'arctic element road type cotton window uncover vicious goat puppy dune dragon'
const mnemonic2 = 'drip reopen mesh throw correct current smile gossip child display come stove rice camera globe'
store.dispatch(addProvider({
name: 'mnemonic1',
args: {
mnemonic: mnemonic1
}
}))
store.dispatch(addProvider({
name: 'mnemonic2',
args: {
mnemonic: mnemonic2
}
}))
Update them:
import { changeProvider } from '@rsksmart/rif-id-core-reducer/identityProvider'
store.dispatch(addProvider({
name: 'mnemonic2',
args: {
mnemonic: 'belt diet dutch eternal include super grant hard donkey artwork brick floor'
}
}))
Remove provider:
import { removeProvider } from '@rsksmart/rif-id-core-reducer/identityProvider'
store.dispatch(removeProvider({
name: 'mnemonic2',
}))
Set a provider as default:
import { setDefaultProvider } from '@rsksmart/rif-id-core-reducer/identityProvider'
store.dispatch(setDefaultProvider({
name: 'mnemonic2',
}))
Some accessors:
import {
hasProviders, hasProviderByName, getProviderNames, getDefaultProvider, getProviderByName
} from '@rsksmart/rif-id-core-reducer/identityProvider'
hasProviders(store.state) // true
hasProviderByName(store.state, 'mnemonic1') // true
getProviderNames(store.state) // ['mnemonic1', 'mnemonic2']
getDefaultProvider(store.state) // { type: 'mnemonic', args: { mnemonic: '...' } }
getProviderByName(store.state, 'mnemonic1') // { type: 'mnemonic', args: { mnemonic: '...' } }
Identity provider interface is designed to add other kind of providers to digitally sign messages:
- Add hardware wallets as identity providers
From base repo directory run npm test
or any of the described test script variants.
- Redux.js: https://redux.js.org/
- Redux.js toolkit: https://redux-toolkit.js.org/