@unisat/notification-service
v1.1.2
Published
Cross-platform permission management service for web3 applications
Downloads
39
Maintainers
Readme
@unisat/notification-service
Cross-platform notification management service for UniSat Wallet. Handles fetching, storing, reading, and deleting in-app notifications with local persistence and automatic cleanup.
Installation
pnpm add @unisat/notification-serviceUsage
import { NotificationService } from '@unisat/notification-service'
const notificationService = new NotificationService()
await notificationService.init({
storage, // ProxyStorageAdapter
api, // WalletApiService
logger, // optional Logger
})API
init(config)
Initializes the service and loads persisted notifications from storage.
| Field | Type | Required | Description |
| --------- | ---------------------- | -------- | ------------------------ |
| storage | ProxyStorageAdapter | Yes | Storage adapter |
| api | WalletApiService | Yes | API client |
| logger | Logger | No | Custom logger |
getNotifications()
Fetches the latest notifications from the server, merges them with the local store, and returns a sorted list.
- Sorted by
prioritydesc, thenpublishTimedesc - Caps the local store at 20 items (lowest priority/oldest are dropped)
- Automatically purges read notifications older than 7 days
- Falls back to the local store on network error
const notifications = await notificationService.getNotifications()
// => StoredNotification[]markAsRead(id)
Marks a notification as read on the server and records the read timestamp locally.
await notificationService.markAsRead('notification-id')deleteNotification(id)
Deletes a notification locally. If it has not been read yet, it is first marked as read on the server.
await notificationService.deleteNotification('notification-id')getUnreadCount()
Returns the number of unread notifications in the local store.
const count = notificationService.getUnreadCount()
// => numberresetAllData()
Clears all notifications from both the local store and storage.
notificationService.resetAllData()Types
interface StoredNotification {
id: string
title: string
content: string
type: string
link?: string
priority: number
publishTime: number
readAt?: number // timestamp when marked as read; undefined means unread
}
type NotificationStore = Record<string, StoredNotification>