UNPKG

@ua/react-native-airship

Version:
108 lines (96 loc) 3 kB
import { AttributeEditor, AttributeOperation } from './AttributeEditor'; import { ScopedSubscriptionListEditor, ScopedSubscriptionListOperation, } from './ScopedSubscriptionListEditor'; import { TagGroupEditor, TagGroupOperation } from './TagGroupEditor'; import { EmailRegistrationOptions, SmsRegistrationOptions, SubscriptionScope } from './types'; /** * Airship contact. */ export class AirshipContact { constructor(private readonly module: any) {} /** * Identifies the contact with a named user Id. * @param namedUser The named user Id. * @returns A promise. */ public identify(namedUser: string): Promise<void> { return this.module.contactIdentify(namedUser); } /** * Resets the contact. * @returns A promise. */ public reset(): Promise<void> { return this.module.contactReset(); } /** * Registers an SMS channel with the contact. * @param msisdn The phone number in E.164 format. * @param options The SMS registration options. * @returns A promise. */ public registerSms(msisdn: string, options: SmsRegistrationOptions): Promise<void> { return this.module.contactRegisterSms(msisdn, options); } /** * Registers an email channel with the contact. * @param address The email address. * @param options The email registration options. * @returns A promise. */ public registerEmail(address: string, options: EmailRegistrationOptions): Promise<void> { return this.module.contactRegisterEmail(address, options); } /** * Notifies the contact of a remote login. * @returns A promise. */ public notifyRemoteLogin(): Promise<void> { return this.module.contactNotifyRemoteLogin(); } /** * Gets the named user Id. * @returns A promise with the result. */ public getNamedUserId(): Promise<string | null | undefined> { return this.module.contactGetNamedUserId(); } /** * Gets the contacts subscription lists. * @returns A promise with the result. */ public getSubscriptionLists(): Promise<Record<string, SubscriptionScope[]>> { return this.module.contactGetSubscriptionLists(); } /** * Edits tag groups. * @returns A tag group editor. */ public editTagGroups(): TagGroupEditor { return new TagGroupEditor((operations: TagGroupOperation[]) => { return this.module.contactEditTagGroups(operations); }); } /** * Edits attributes. * @returns An attribute editor. */ public editAttributes(): AttributeEditor { return new AttributeEditor((operations: AttributeOperation[]) => { return this.module.contactEditAttributes(operations); }); } /** * Edits subscription lists. * @returns A subscription list editor. */ public editSubscriptionLists(): ScopedSubscriptionListEditor { return new ScopedSubscriptionListEditor( (operations: ScopedSubscriptionListOperation[]) => { return this.module.contactEditSubscriptionLists(operations); } ); } }