@fission-suite/contacts-react
v1.1.0
Published
React components for working with Contacts.
Downloads
12
Readme
Contacts React
React components for working with contacts data.
Contacts Data
These components assume contacts in the form of:
{
"uuid": "a58bca0d-a38f-42a1-8b33-bcd53027881c",
"label": "Main ETH account",
"notes": "💰",
"createdAt": "2021-05-26T16:03:03Z",
"modifiedAt": "2021-05-26T16:03:03Z",
"address": {
"accountAddress": "0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb",
"chainId": "eip155:1"
}
}
You can find the JSON schema in the repo from the contacts app, which is live at contacts.fission.app. In the app you can view and manage your contacts. By default it assumes the contacts data in the private/Documents/Contacts/
directory.
Components
To illustrate how easy it is to work with the webnative filesystem, we're making a few React components to easily render contacts in your React app.
import { List } from '@fission-suite/contacts-react'
webnative.initialise({ ... }).then(state => {
if (state.fs) {
return <List fileSystem={state.fs} />
}
})
List
component properties:
{
blockchainNetworksPath, // default: @fission-suite/contacts-react/List.DEFAULT_BLOCKCHAIN_NETWORKS_PATH
emptyStateComponent, // default: @fission-suite/contacts-react/List.EmptyState
fileSystem, // REQUIRED
itemComponent, // default: @fission-suite/contacts-react/Contact.Contact
libraryPath, // default: @fission-suite/contacts-react/List.DEFAULT_PATH
listElement, // default: "dl"
loadingComponent, // default: @fission-suite/contacts-react/List.Loading
}
Contact
component properties:
{
blockchainNetworks, // default: {}, passed from the default `List` component
contact // REQUIRED
}
The default Contact
and loading components are unstyled, so most likely you'll want to provide styled components instead.
import { isBlockchainAddress, lookUpBlockchainNetwork } from '@fission-suite/contacts-react/Contact'
<List
fileSystem={state.fs}
listElement="ol"
emptyStateComponent={
<div>Nothing here yet.</div>
}
loadingComponent={() =>
<div>Loading …</div>
}
itemComponent={({ blockchainNetworks, contact }) => {
if (isBlockchainAddress(contact.address)) {
const network = lookUpBlockchainNetwork(contact.address, blockchainNetworks)
return <li>
{contact.address.accountAddress}
{network.label}
</li>
}
return <></>
}}
/>
Example
There is an example in the example directory, which is also available at contacts-react.fission.app. That also serves as an example for the React components from the Fission UI Kit.