Migration Guide
General Migration notes​
isLimited
flag has been removed in favor ofallApps
flag. They essentially mean the opposite thing.- Deleting messages is no longer possible
- Messages are now stored on notify server and can be paged
- Registration is more flexible since it is now split into 2 functions
Migrating from 0.x to 1.0.0​
- React
- JavaScript
For developers using @web3inbox/core
without the hooks, there are far less breaking changes.
Managing registration​
Registration is now split into 2 steps to avoid the opinionated approach of passing onSign
callback.
import { useSignMessage } from '@wagmi'
const { signMessageAsync } = useSignMessage()
client.register(signMessageAsync)
const { registerParams, message } = client.prepareRegistration({ account: 'eip155:1:0x..' })
const signature = await signMessageAsync(message)
client.register({ registerParams, signature })
Managing Notifications​
deleteMessage
has been removed.pageNotifications
has been added to allow paging notifications
There are numerous breaking changes in the stable release.
Package rename​
@web3inbox/widget-react
has been renamed to @web3inbox/react
@web3inbox/core
is still named the same.
Initializing the client​
Previously, a use of hook was required to init the client and a separate hook was required to check for ready status. Now, there is only a hook for checking ready status which is recommended to be used to be sure if web3inbox functionality is ready to use. However, initting the client is now done with a simple function call.
import { useInitWeb3InboxClient } from '@web3inbox/widget-react'
import { initWeb3InboxClient } from '@web3inbox/react'
useInitWeb3inboxClient({ projectId, domain, isLimited })
initWeb3inboxClient({ projectId, domain, allApps })
Checking for client ready status​
import { useWeb3InboxClient } from '@web3inbox/react'
const { isLoading: w3iClientIsLoading } = useWeb3InboxClient()
Managing Accounts​
Previously, the account needed to be set using setAccount
and still had to be passed down to hooks like useManageSubscriptions
. This is no longer
the case. Also, registration management was included in the same hook. Now they all follow single responsibility principle.
- Setting accounts
- import { useW3iAccount } from "@web3inbox/widget-react"
+ import { useWeb3InboxAccount } from "@web3inbox/react"
- const { setAccount } = useW3iAccount()
setAccount(`eip155:1:0x...`)
+ const { data: account } = useWeb3InboxAccount(`eip155:1:0x...`)
- Handling registration
- const handleRegistration = () => {
- register(signMessageAsync)
- }
+ const { prepareRegistration } = usePrepareRegistration();
+ const { register, isLoading: isLoadingRegister } = useRegister();
+ const handleRegistration = async () => {
+ try {
+ const { message, registerParams } = await prepareRegistration();
+ const signature = await signMessageAsync({ message: message });
+ await register({ registerParams, signature });
+ } catch (registerIdentityError: any) {
+ console.error(registerIdentityError)
+ }
+ };
Managing notifications​
Messages (notifications) function a little differently now. One of the big changes is that you can no longer delete messages. Furthermore, messages can now be paged. For convenience, "infinte scroll" paging functionality is available, as in keeping older pages in the returned array.
- Retrieving notifications
- import { useMessages } from "@web3inbox/widget-react"
+ import { useNotifications } from "@web3inbox/react"
- const { messages } = useMessages()
+ const notificationsPerPage = 5
+ const isInfiniteScroll = true
+
+ const { data: notifications, nextPage } = useNotifications(
+ notificationsPerPage,
+ isInfiniteScroll
+ )
+
+ const getMoreNotifications = () => {
+ nextPage()
+ }
- Retrieving notification types
Notification images are retrieved from notification types now.
Sizes of images available are: sm
, md
and lg
for small, medium and large respectively.
- import { useSubscriptionScopes } from "@web3inbox/widget-react"
+ import { useNotificationTypes } from "@web3inbox/react"
- const { scopes } = useSubscriptionScopes()
+ const { data: notificationTypes } = useNotificationTypes()
+
+ const notificationImageUrl = notificationTypes[notification.type].imageUrls.md;
Managing Subscriptions​
Managing subscriptions has changed considerably. Previously there was a single hook and now there are numerous single responsibility hooks.
- import { useManageSubscription } from "@web3inbox/widget-react"
+ import { useSubscribe, useUnsubscribe, useSubscription } from "@web3inbox/react"
- const { subscribe, unsubscribe, isSubscribed } = useManageSubscription()
+ const { subscribe } = useSubscribe()
+ const { unsubscribe } = useUnsubscribe()
+ const { data: subscription } = useSubscription()
- const { subscriptions } = useSubscriptions()
+ const { data: subscriptions } = useSubscriptions()
Was this helpful?