web-push-notifications
Version:
Pushwoosh web push notifications
211 lines (210 loc) • 6.51 kB
TypeScript
import { type IInboxMessage } from '../../models/InboxMessages.types';
import { type MultiRegisterDeviceRequest } from '../Api/Api.types';
type TMethodCheckDevice = 'checkDevice';
type TMethodGetConfig = 'getConfig';
type TMethodApplicationOpen = 'applicationOpen';
type TMethodRegisterDevice = 'registerDevice';
type TMethodUnregisterDevice = 'unregisterDevice';
type TMethodDeleteDevice = 'deleteDevice';
type TMethodMessageDeliveryEvent = 'messageDeliveryEvent';
type TMethodPushStat = 'pushStat';
type TMethodSetTags = 'setTags';
type TMethodGetTags = 'getTags';
type TMethodRegisterUser = 'registerUser';
type TMethodRegisterEmail = 'registerEmail';
type TMethodRegisterEmailUser = 'registerEmailUser';
type TMethodRegisterSmsNumber = 'registerSmsNumber';
type TMethodRegisterWhatsappNumber = 'registerWhatsappNumber';
type TMethodSetEmailTags = 'setEmailTags';
type TMethodPostEvent = 'postEvent';
type TMethodGetInboxMessages = 'getInboxMessages';
type TMethodInboxStatus = 'inboxStatus';
type TMethodPageVisit = 'pageVisit';
type TMethodSetPurchase = 'setPurchase';
type TMethodMultiRegisterDevice = 'multiRegisterDevice';
export interface IRequest {
application: string;
hwid: string;
userId: string;
device_type: number;
device_model?: string;
timezone?: number;
language?: string;
v?: string;
}
export interface IRequestEmail extends Omit<IRequest, 'hwid' | 'device_type'> {
email: string;
}
export interface IRequestSmsNumber extends Omit<IRequest, 'hwid' | 'device_type'> {
number: string;
}
export interface IRequestWhatsappNumber extends Omit<IRequest, 'hwid' | 'device_type'> {
number: string;
}
interface IRequestGetConfig extends IRequest {
features: string[];
}
interface IRequestRegisterDevice extends IRequest {
push_token?: string;
public_key?: string;
auth_token?: string;
}
interface IRequestRegisterUser extends IRequest {
ts_offset: number;
}
interface IRequestRegisterEmail extends IRequestEmail {
tags?: {
[key: string]: any;
};
ts_offset: number;
}
interface IRequestRegisterEmailUser extends IRequestEmail {
ts_offset: number;
}
interface IRequestRegisterSmsNumber extends IRequestSmsNumber {
ts_offset: number;
}
interface IRequestRegisterWhatsappNumber extends IRequestWhatsappNumber {
ts_offset: number;
}
interface IRequestSetEmailTags extends IRequestEmail {
tags: {
[key: string]: any;
};
}
interface IRequestPostEvent extends IRequest {
event: string;
attributes?: {
[key: string]: any;
};
timestampUTC?: number;
timestampCurrent?: number;
}
interface IRequestMessageDeliveryEvent extends IRequest {
hash: string;
metaData: {
[key: string]: any;
};
}
interface IRequestPushStat extends IRequest {
hash: string;
metaData: {
[key: string]: any;
};
}
interface IRequestSetTags extends IRequest {
tags: {
[key: string]: any;
};
}
interface IRequestGetInboxMessages extends IRequest {
userId: string;
last_code: string;
count?: number;
last_request_time: number;
}
interface IRequestInboxStatus extends IRequest {
userId: string;
inbox_code: string;
time: number;
status: number;
hash?: string;
device_type: number;
}
interface IRequestPageVisit extends IRequest {
title: string;
url_path: string;
url: string;
}
interface IRequestSetPurchase extends IRequest {
transactionDate: string;
quantity: number;
currency: string;
productIdentifier: string;
price: number;
}
type IResponse = void;
interface IResponseCheckDevice {
exist: boolean;
push_token_exist: boolean;
}
interface IResponseGetConfig {
features: {
page_visit?: {
entrypoint: string;
enabled: boolean;
};
vapid_key?: string;
web_in_apps?: {
enabled: boolean;
};
events?: string[];
subscription_prompt?: {
useCase: 'not-set' | 'default' | 'not-used';
};
};
}
interface IResponseGetTags {
result: {
[key: string]: any;
};
}
interface IResponsePostEvent {
code?: string;
}
interface IResponseGetInboxMessages {
messages: Array<IInboxMessage>;
next: string;
deleted: Array<string>;
new_inbox: number;
}
export type TMethod = TMethodCheckDevice | TMethodGetConfig | TMethodApplicationOpen | TMethodRegisterDevice | TMethodUnregisterDevice | TMethodDeleteDevice | TMethodMessageDeliveryEvent | TMethodPushStat | TMethodSetTags | TMethodGetTags | TMethodRegisterUser | TMethodRegisterEmail | TMethodRegisterEmailUser | TMethodRegisterSmsNumber | TMethodRegisterWhatsappNumber | TMethodSetEmailTags | TMethodPostEvent | TMethodGetInboxMessages | TMethodInboxStatus | TMethodPageVisit | TMethodSetPurchase | TMethodMultiRegisterDevice;
export interface IMapRequest {
checkDevice: IRequest;
getConfig: IRequestGetConfig;
applicationOpen: IRequest;
registerDevice: IRequestRegisterDevice;
unregisterDevice: IRequest;
deleteDevice: IRequest;
messageDeliveryEvent: IRequestMessageDeliveryEvent;
pushStat: IRequestPushStat;
setTags: IRequestSetTags;
getTags: IRequest;
registerUser: IRequestRegisterUser;
registerEmail: IRequestRegisterEmail;
registerEmailUser: IRequestRegisterEmailUser;
registerSmsNumber: IRequestRegisterSmsNumber;
registerWhatsappNumber: IRequestRegisterWhatsappNumber;
setEmailTags: IRequestSetEmailTags;
postEvent: IRequestPostEvent;
getInboxMessages: IRequestGetInboxMessages;
inboxStatus: IRequestInboxStatus;
pageVisit: IRequestPageVisit;
setPurchase: IRequestSetPurchase;
multiRegisterDevice: MultiRegisterDeviceRequest;
}
export interface IMapResponse {
checkDevice: IResponseCheckDevice;
getConfig: IResponseGetConfig;
applicationOpen: IRequest;
registerDevice: IResponse;
unregisterDevice: IResponse;
deleteDevice: IResponse;
messageDeliveryEvent: IResponse;
pushStat: IResponse;
setTags: IResponse;
getTags: IResponseGetTags;
registerUser: IResponse;
registerEmail: IResponse;
registerEmailUser: IResponse;
registerSmsNumber: IResponse;
registerWhatsappNumber: IResponse;
setEmailTags: IResponse;
postEvent: IResponsePostEvent;
getInboxMessages: IResponseGetInboxMessages;
inboxStatus: IResponse;
pageVisit: IResponse;
setPurchase: IResponse;
multiRegisterDevice: IResponse;
}
export {};