UNPKG

web-push-notifications

Version:
171 lines (170 loc) 5.49 kB
import { type INotificationButton } from '../models/NotificationPayload.types'; import { type ISubscribePopupConfig } from '../widgets/SubscribePopup/types/subscribe-popup'; export type PushwooshApiResponse = { status_code: number; status_message: string; response?: any; }; export type TPWPermission = 'denied' | 'granted' | 'default'; export interface IPWDriverAPIParams { hwid: string; pushToken?: string; publicKey?: string; authToken?: string; } export interface TPWAPIParams extends IPWDriverAPIParams { applicationCode: string; deviceType: number; deviceModel: string; language: string; userId?: string; } export interface TPWLastOpenMessage { messageHash?: string; expiry: number; url?: string; } export interface PushManager { permissionState(options: PushSubscriptionOptions): Promise<TPWPermission>; } export interface PushSubscription { unsubscribe(): Promise<boolean>; subscriptionId: string; } export interface IPWDriver { initWorker?(): Promise<any>; getPermission(): Promise<TPWPermission>; isSubscribed(): Promise<boolean>; askSubscribe(eventEmitter?: any): Promise<any>; unsubscribe(): Promise<any>; getAPIParams(): Promise<IPWDriverAPIParams>; onApiReady?(api: any): void; isNeedUnsubscribe?(): Promise<boolean>; } export interface ITooltipText { successSubscribe?: string; needSubscribe?: string; blockSubscribe?: string; alreadySubscribed?: string; } export interface ISubscribeWidget { enable: boolean; position?: string; bgColor?: string; bellColor?: string; shadow?: string; size?: string; indent?: string; zIndex?: string; tooltipText?: ITooltipText; buttonImage?: string; contentImages?: Record<string, string>; } export type IWidgetPosition = 'left' | 'right' | 'top' | 'bottom'; export interface IInboxWidget { enable: boolean; triggerId?: string; position?: IWidgetPosition; appendTo?: string; title?: string; bgColor?: string; textColor?: string; fontFamily?: string; borderRadius?: number; borderColor?: string; badgeBgColor?: string; badgeTextColor?: string; widgetWidth?: number; zIndex?: number; messageTitleColor?: string; timeTextColor?: string; emptyInboxTitle?: string; emptyInboxText?: string; emptyInboxIconUrl?: string; emptyInboxTitleColor?: string; emptyInboxTextColor?: string; } export interface IInitParams { applicationCode: string; apiToken?: string; communicationEnabled?: boolean; serviceWorkerUrl?: string | null; safariWebsitePushID?: string; autoSubscribe?: boolean; pushwooshUrl?: string; defaultNotificationImage?: string; defaultNotificationTitle?: string; logLevel?: string; userId?: string; email?: string; smsNumber?: string; whatsAppNumber?: string; scope?: string; tags?: { [key: string]: any; }; subscribeWidget?: ISubscribeWidget; inboxWidget?: IInboxWidget; subscribePopup?: ISubscribePopupConfig; webSDKPath?: string; } export interface INotificationOptions extends NotificationOptions { title: string; messageHash: string; openUrl: string; url?: string; inboxId: string; image?: string; code?: string; buttons?: INotificationButton[]; customData?: { [key: string]: any; }; metaData?: { [key: string]: any; }; campaignCode?: string; } export type TPWCanWaitCallback = (f: any) => Promise<any> | any; export interface IWorkerPushwooshGlobal { push(listener: ['onPush', TPWCanWaitCallback]): void; getListeners(eventName: string): TPWCanWaitCallback[]; eventBus: any; api: any; initApi: any; } export interface IPWBroadcastClientsParams { type: string; payload: any; } export type TWriteType = 'error' | 'apirequest' | 'info'; export interface ILogger { setLevel(level: string): void; error(...args: any[]): void; info(...args: any[]): void; debug(...args: any[]): void; write(type: TWriteType, message: any, additional?: any): Promise<void>; isManualLevel(): boolean; [key: string]: any; } export type ListenerFn = (...args: Array<any>) => void | Promise<any>; export type HandlerFn = (api: any, params?: any) => any; export type TWorkerDriverParams = { eventEmitter?: any; scope?: string; applicationCode: string; serviceWorkerUrl: string | null; applicationServerPublicKey?: string; }; export type TWorkerSafariDriverParams = { eventEmitter?: any; applicationCode: string; webSitePushID: string; pushwooshUrl: string; }; export type TDoPushwooshMethod = (type: string, params: any, url?: string) => Promise<any>; export type PWInput = PushOnReadyCallback | PushInitCallback | PushEventCallback; export type PushOnReadyCallback = HandlerFn; export type PushInitCallback = ['init', IInitParams]; export type PushEventCallback = [PWEvent, HandlerFn]; export type PWEvent = 'onLoad' | 'onReady' | 'onSubscribe' | 'onUnsubscribe' | 'onRegister' | 'onSWInitError' | 'onPermissionPrompt' | 'onPermissionDenied' | 'onPermissionGranted' | 'onNotificationClick' | 'onPushDelivery' | 'onNotificationClose' | 'onChangeCommunicationEnabled' | 'onPutNewMessageToInboxStore' | 'onUpdateInboxMessages' | 'onShowNotificationPermissionDialog' | 'onHideNotificationPermissionDialog' | 'onShowSubscriptionWidget' | 'onHideSubscriptionWidget';