Skip to content

Save Web3 contacts and reuse across multiple dApps. Stored and encrypted with Ceramic, SelfId and 3ID Connect.

License

Notifications You must be signed in to change notification settings

bulla-network/bulla-contacts

Repository files navigation

Bulla Contacts

Save Web3 contacts and reuse across multiple dApps. Stored and encrypted with Ceramic, SelfId and 3ID Connect.

Get started

npm install @bulla-network/contacts yarn add @bulla-network/contacts

Provider components

This is a React library. There are two main components:

<SelfIdProvider /> and <ContactsProvider />.

SelfIdProvider maintains the connection information to SelfId and Ceramic. It provides the current state of the connection and a function to enable it if disabled.

ContactsProvider uses the SelfId connection to get, set and manipulate the contacts. The rest of the app can operate without knowledge of how contacts are persisted.

Example:

const App = () => {
	const {userAddress} = useWeb3(); // not included, SelfIdProvider needs wallet and network.
	return (
		<SelfIdProvider userAddress={userAddress} notSupported={false} env="mainnet">
			<ContactsProvider  userAddress={userAddress}>
				<YourAppHere />
			</ContactsProvider>
		</SelfIdProvider>
	);
}

Hooks

useContacts

Your main entry point to interact with Contacts.

const contactsContext = useContacts();

where ContactsContext can be of type ContactsRepo | SelfIdNotConnectedState | 'fetching';

This allows for improve type safety and easier UX.

Helper functions are available to help with this inconvenience.

function  isContactsReady(context: ContactsContext): context  is  ContactsRepo;
function  requireContactsReady(): never;

About

Save Web3 contacts and reuse across multiple dApps. Stored and encrypted with Ceramic, SelfId and 3ID Connect.

Resources

License

Stars

Watchers

Forks