This Headless Inbox can be used if you want more control on the UI of Inbox Notifications like showing notifications in Sidepanel or in Fullscreen etc.
Installation
npm install @suprsend/react-inbox
Adding SuprSend Inbox component
SuprSendProvider component
Enclose your notifications component in **SuprSendProvider**. SuprSend hooks can only be used in children of SuprSendProvider component
import { SuprSendProvider } from "@suprsend/react-inbox";
<SuprSendProvider
workspaceKey="<workspace_key>"
subscriberId="<subscriber_id>"
distinctId="<distinct_id>"
>
<YourCode />
</SuprSendProvider>
Props | Type | Description |
---|
workspaceKey | string (Mandatory) | You can find it in SuprSend Dashboard inside _Settings -> API Keys_. |
distinctId | string (Mandatory) | Unique identifier for the user. |
subscriberId | string (Mandatory) | This is unique string for every distinctId used for authentication to inbox service. You check generation docs |
tenantId | string (Optional) | If you use multi-tenant architecture you can get inbox notifications for that specific tenant/brand only. |
pageSize | number (Optional) | Notifications to get in one API call. Used for pagination to get older notifications. Maximum allowed is 50. Defaults to 20. |
stores | Store (optional) | Pass stores array if you want to use multi tab feature |
🚧 SuprSend uses socket.io to get realtime updates in inbox channel.Make sure that you have only one active SuprSend’s socket connection at a time (inspect -> network -> ws tab) to avoid unexpected issues.
useUnseenCount hook
This hook provides unSeenCount, markAllSeen which you can show on Bell icon.
import { useUnseenCount } from "@suprsend/react-inbox";
const { unSeenCount, markAllSeen } = useUnseenCount();
Returns | Type | Description |
---|
unSeenCount | number | Use this variable to show the unseen notification count anywhere in your application. |
markAllSeen | method | Used to mark seen for all notifications. Call this method on clicking the bell icon so that it will reset the unSeenCount to 0. |
useNotifications hook
This hook is used to get notifications related data and method
import { useNotifications } from "@suprsend/react-inbox";
const {notifications, markClicked, markAllRead, initialLoading, hasNext, fetchPrevious, fetchMoreLoading } = useNotifications(storeId)
Parameter | Type | Description |
---|
storeId | string (Optional) | Optional parameter which return data of that specific store if you are using multi-tab feature. You can ignore this if you are not using multi-tab feature. |
Returns | Type | Description |
---|
notifications | IRemoteNotification\[] | Contains information related to notifications. This array can be looped to display notifications. |
markClicked | (id: string) => void | used to mark notification as clicked. |
markRead | (id: string) => void | used to mark notification as read. |
markUnRead | (id: string) => void | used to mark notification as unread. |
markArchived | (id: string) => void | used to mark notification as archived |
markAllRead | ( ) => void | Method used to mark all notifications as read. |
initialLoading | boolean | used for showing initial loader while fetching notifications first time |
hasNext | boolean | check if older notifications are present and then call _fetchPrevious_ method if its true to get older notifications. |
fetchPrevious | ( ) => void | used to get older notifications if you implement pagination, by checking _hasNext_ flag |
fetchMoreLoading | boolean | used to show loader while getting fetch older notifications. |
interface IRemoteNotification {
n_id: string
n_category: string
created_on: number
seen_on?: number
interacted_on?: number
tags?: string[]
is_pinned?: boolean
can_user_unpin?: boolean
is_expiry_visible?: boolean
expiry?: number
archived?: boolean
message: IRemoteNotificationMessage
}
interface IRemoteNotificationMessage {
header?: string
schema: string
text: string
url?: string
open_in_new_tab?: boolean
extra_data?: string
actions?: { url: string, name: string, open_in_new_tab?: boolean}[]
avatar?: { avatar_url: string; action_url?: string }
subtext?: { text: string; action_url?: string }
}
useStoreUnseenCount hook
This hook can be used to get unread notifications count of a specific store, Use it only if you are using multi-tab.
import { useStoreUnseenCount } from "@suprsend/react-inbox";
const { unSeenCount } = useUnseenCount();
useStoresUnseenCount hook
This hook can be used to get unread notifications count of all stores, Use it only if you are using multi-tab
import { useStoresUnseenCount } from "@suprsend/react-inbox";
const { [storeId: string]: number } = useUnseenCount();
useEvent hook
This hook is an event emitter, takes arguments event type and callback function(called when event occurs). Must be called anywhere inside SuprSendProvider
import { useEvent } from "@suprsend/react-inbox";
useEvent(event_name: string, (notification: IRemoteNotification)=> void)
Handled Event Names:
- new_notification: Called when the new notification occurs, can be used to show toast notification in your application.
import { useEvent } from "@suprsend/react-inbox";
function Home() {
useEvent("new_notification", (notificationData) => {
alert("You have new notifications");
});
return <p>Home</p>;
}