@exodus/personal-notes
v3.7.0
Published
CRUD interface for personal notes (user-generated off-chain transaction metadata)
Downloads
6,100
Readme
@exodus/personal-notes
The module allows users to create, manage, and store personal notes securely for transactions
How it Works
- Personal Notes Atom
The core functionality of the module is powered by the personalNotesAtom
, which stores user-generated notes.
Each note has uniq id and bounded to txId.
Personal Notes stored using PersonalNoteSet
and PersonalNote
models
const personalNotes = PersonalNoteSet.fromArray([
{ txId: 'bitcoin-tx-1', message: 'gift for friend' },
{ txId: 'ethereum-tx-1', message: 'gift from friend' },
])
personalNotesAtom.set(personalNotes)
const bitcoinTxPersonalNote = personalNotes.get('bitcoin-tx-1')
- Module
The module does 2 things:
- Sync personal notes to
fusion
- Provides
upsert
method to add personal notes Only following props are allowed:
exodus.personalNotes.upsert({
txId, // required
message, // string
// specific fields used by platforms features
username,
address,
dapp,
providerData,
walletConnect,
xmrInputs,
})
- Plugin
Plugin subscribes to personalNotesAtom
and emit its value to port
- Redux module
Provides selectors to get personal notes
Usage
This feature is designed to be used together with @exodus/headless
. See using the sdk.
Play with it
- Open the playground https://exodus-hydra.pages.dev/
- Run
exodus.personalNotes.upsert({txId: 'e7b8f55e3173aed308b8fbff11ee1fb96183e51f111ac415da9ae057c72ac8ca', message: 'my note'})
in the Dev Tools Console. - Run
selectors.personalNotes.data(store.getState())
in the Dev Tools Console. You should see stored personal notes - Run
selectors.personalNotes.get(store.getState())('e7b8f55e3173aed308b8fbff11ee1fb96183e51f111ac415da9ae057c72ac8ca')
in the Dev Tools Console. You should see specific personal note
API Side
See using the sdk for more details on how features plug into the SDK
exodus.personalNotes.upsert(<Event>{
txId: 'bitcoin-tx-id',
message: 'tx for friend',
})
UI Side
See using the sdk for more details on basic UI-side setup.
import { selectors } from '~/ui/flux'
const usePersonalNote = (txId) => {
const getPersonalNote = useSelector(selectors.personalNotes.get)
const personalNote = getPersonalNote(txId)
return personalNote
}