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?