@ua/react-native-airship
Version:
Airship plugin for React Native apps.
108 lines (96 loc) • 3 kB
text/typescript
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);
}
);
}
}