160 lines
3.3 KiB
JavaScript
160 lines
3.3 KiB
JavaScript
/**
|
|
* @flow
|
|
* IOSNotification representation wrapper
|
|
*/
|
|
import { generatePushID } from '../../utils';
|
|
import type Notification from './Notification';
|
|
|
|
type AttachmentOptions = {|
|
|
TypeHint: string,
|
|
ThumbnailHidden: boolean,
|
|
ThumbnailClippingRect: {
|
|
height: number,
|
|
width: number,
|
|
x: number,
|
|
y: number,
|
|
},
|
|
ThumbnailTime: number,
|
|
|};
|
|
|
|
type Attachment = {|
|
|
identifier: string,
|
|
options?: AttachmentOptions,
|
|
url: string,
|
|
|};
|
|
|
|
export type NativeIOSNotification = {
|
|
alertAction?: string,
|
|
attachments: Attachment[],
|
|
badge?: number,
|
|
category?: string,
|
|
hasAction?: boolean,
|
|
identifier?: string,
|
|
launchImage?: string,
|
|
threadIdentifier?: string,
|
|
};
|
|
|
|
export default class IOSNotification {
|
|
_alertAction: string; // alertAction | N/A
|
|
_attachments: Attachment[]; // N/A | attachments
|
|
_badge: number; // applicationIconBadgeNumber | badge
|
|
_category: string;
|
|
_hasAction: boolean; // hasAction | N/A
|
|
_identifier: string; // N/A | identifier
|
|
_launchImage: string; // alertLaunchImage | launchImageName
|
|
_notification: Notification;
|
|
_threadIdentifier: string; // N/A | threadIdentifier
|
|
|
|
constructor(notification: Notification) {
|
|
this._attachments = [];
|
|
// TODO: Is this the best way to generate an ID?
|
|
this._identifier = generatePushID();
|
|
this._notification = notification;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param identifier
|
|
* @param identifier
|
|
* @param identifier
|
|
* @returns {Notification}
|
|
*/
|
|
addAttachment(
|
|
identifier: string,
|
|
url: string,
|
|
options?: AttachmentOptions
|
|
): Notification {
|
|
this._attachments.push({
|
|
identifier,
|
|
options,
|
|
url,
|
|
});
|
|
return this._notification;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param alertAction
|
|
* @returns {Notification}
|
|
*/
|
|
setAlertAction(alertAction: string): Notification {
|
|
this._alertAction = alertAction;
|
|
return this._notification;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param badge
|
|
* @returns {Notification}
|
|
*/
|
|
setBadge(badge: number): Notification {
|
|
this._badge = badge;
|
|
return this._notification;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param category
|
|
* @returns {Notification}
|
|
*/
|
|
setCategory(category: string): Notification {
|
|
this._category = category;
|
|
return this._notification;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param hasAction
|
|
* @returns {Notification}
|
|
*/
|
|
setHasAction(hasAction: boolean): Notification {
|
|
this._hasAction = hasAction;
|
|
return this._notification;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param identifier
|
|
* @returns {Notification}
|
|
*/
|
|
setIdentifier(identifier: string): Notification {
|
|
this._identifier = identifier;
|
|
return this._notification;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param launchImage
|
|
* @returns {Notification}
|
|
*/
|
|
setLaunchImage(launchImage: string): Notification {
|
|
this._launchImage = launchImage;
|
|
return this._notification;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param threadIdentifier
|
|
* @returns {Notification}
|
|
*/
|
|
setThreadIdentifier(threadIdentifier: string): Notification {
|
|
this._threadIdentifier = threadIdentifier;
|
|
return this._notification;
|
|
}
|
|
|
|
build(): NativeIOSNotification {
|
|
// TODO: Validation
|
|
|
|
return {
|
|
alertAction: this._alertAction,
|
|
attachments: this._attachments,
|
|
badge: this._badge,
|
|
category: this._category,
|
|
hasAction: this._hasAction,
|
|
identifier: this._identifier,
|
|
launchImage: this._launchImage,
|
|
threadIdentifier: this._threadIdentifier,
|
|
};
|
|
}
|
|
}
|