3.8.0 • Published 7 months ago
@exodus/personal-notes v3.8.0
@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
upsertmethod 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
}