From aada893f09557e94c72d89167460d10742bb8586 Mon Sep 17 00:00:00 2001 From: Ibrahim Hadeed Date: Sat, 30 Apr 2016 12:56:30 -0400 Subject: [PATCH 1/7] fix(contacts): plugin rewrite --- src/plugins/contacts.ts | 174 +++++++++++++++++++++++++++++++--------- 1 file changed, 136 insertions(+), 38 deletions(-) diff --git a/src/plugins/contacts.ts b/src/plugins/contacts.ts index 16299330a..049314ff3 100644 --- a/src/plugins/contacts.ts +++ b/src/plugins/contacts.ts @@ -31,27 +31,80 @@ export interface ContactProperties { urls?: ContactField[]; } -export interface Contact extends ContactProperties { - /** - * Returns a new Contact object that is a deep copy of the calling object, with the id property set to null - */ - clone(): Contact; - /** - * Removes the contact from the device contacts database, otherwise executes an error callback with a ContactError object. - * @param onSuccess Success callback function invoked on success operation. - * @param onError Error callback function, invoked when an error occurs. - */ - remove( - onSuccess?: () => void, - onError?: (error: Error) => void): void; - /** - * Saves a new contact to the device contacts database, or updates an existing contact if a contact with the same id already exists. - * @param onSuccess Success callback function invoked on success operation with che Contact object. - * @param onError Error callback function, invoked when an error occurs. - */ - save( - onSuccess?: (contact: Contact) => void, - onError?: (error: Error) => void): void; +// export interface Contact extends ContactProperties { +// /** +// * Returns a new Contact object that is a deep copy of the calling object, with the id property set to null +// */ +// clone(): Contact; +// /** +// * Removes the contact from the device contacts database, otherwise executes an error callback with a ContactError object. +// * @param onSuccess Success callback function invoked on success operation. +// * @param onError Error callback function, invoked when an error occurs. +// */ +// remove( +// onSuccess?: () => void, +// onError?: (error: Error) => void): void; +// /** +// * Saves a new contact to the device contacts database, or updates an existing contact if a contact with the same id already exists. +// * @param onSuccess Success callback function invoked on success operation with che Contact object. +// * @param onError Error callback function, invoked when an error occurs. +// */ +// save( +// onSuccess?: (contact: Contact) => void, +// onError?: (error: Error) => void): void; +// } + +export class Contact { + + private _objectInstance: any; + + get id(): string { + return this._objectInstance.id; + } + set id(val: string) { + this._objectInstance.id = val; + } + get displayName(): string { + return this._objectInstance.displayName; + } + set displayName(val: string){ + this._objectInstance.displayName = val; + } + get name(): ContactName { + return this._objectInstance.name; + } + set name(val: ContactName){ + this._objectInstance.name = val; + } + get nickname(): string { + return this._objectInstance.nickname; + } + set nickname(val: string){ + this._objectInstance.nickname = val; + } + get phoneNumbers(): ContactField[] { + return this._objectInstance.phoneNumbers; + } + set phoneNumbers(val: ContactField[]){ + this._objectInstance.phoneNumbers = val; + } + get emails(): ContactField[] { + return this._objectInstance.emails; + } + set emails(val: ContactField[]){ + this._objectInstance.emails = val; + } + get addresses(): ContactAddress[] { + return this._objectInstance.addresses; + } + set addresses(val: ContactAddress[]){ + this._objectInstance.addresses = val; + } + + constructor () { + // creat eobj + } + } interface ContactError { @@ -87,15 +140,30 @@ export interface ContactName { honorificSuffix?: string; } -declare var ContactName: { - /** Constructor for ContactName object */ - new(formatted?: string, - familyName?: string, - givenName?: string, - middleName?: string, - honorificPrefix?: string, - honorificSuffix?: string): ContactName -}; +// declare var ContactName: { +// /** Constructor for ContactName object */ +// new(formatted?: string, +// familyName?: string, +// givenName?: string, +// middleName?: string, +// honorificPrefix?: string, +// honorificSuffix?: string): ContactName +// }; + +export class ContactName { + private _objectInstance: any; + + constructor() { } + + public set givenName(val: string) { + this._objectInstance.givenName = val; + } + public set familyName(val: string) { + this._objectInstance.familyName = val; + } + public get givenName(): string {return this._objectInstance.givenName; } + public get familyName(): string {return this._objectInstance.familyName; } +} export interface ContactField { /** A string that indicates what type of field this is, home for example. */ @@ -183,9 +251,28 @@ declare var ContactFindOptions: { desiredFields?: string[]): ContactFindOptions }; -declare var Contact: { - new(): Contact -}; +export class ContactFindOptions { + private _objectInstance: any; + public set filter(val: string) { + this._objectInstance.filter = val; + } + + public set multiple(val: boolean) { + this._objectInstance.multiple = val; + } + + public set desiredFields(val) { + this._objectInstance.desiredFields = val; + } + + public set hasPhoneNumber(val: boolean) { + this._objectInstance.hasPhoneNumber = val; + } +} + +// declare var Contact: { +// new(): Contact +// }; /** * @name Contacts @@ -215,17 +302,28 @@ declare var Contact: { repo: 'https://github.com/apache/cordova-plugin-contacts' }) export class Contacts { + + private _objectInstance: any; + + public set displayName(val: string) { + this._objectInstance.displayName = val; + } + + public set nickname(val: boolean) { + this._objectInstance.nickname = val; + } + + get displayName() {return this._objectInstance.displayName; } + get nickname() {return this._objectInstance.nickname; } + /** * Create a new Contact object. * * @param options {Object} Object whose properties the created Contact should have. * @return {Contact} Returns the created contact */ - @Cordova({ - sync: true - }) - static create(options: ContactProperties) { - return new Contact(); + constructor (options?: ContactProperties) { + this._objectInstance = navigator.contacts(options); }; /** From 937138378bda330d5d2408b11935d97919c3d41f Mon Sep 17 00:00:00 2001 From: Ibrahim Hadeed Date: Sat, 30 Apr 2016 13:43:47 -0400 Subject: [PATCH 2/7] update the new plugin rewrite --- src/plugins/contacts.ts | 96 ++++++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 44 deletions(-) diff --git a/src/plugins/contacts.ts b/src/plugins/contacts.ts index 049314ff3..afaa603c2 100644 --- a/src/plugins/contacts.ts +++ b/src/plugins/contacts.ts @@ -1,4 +1,4 @@ -import {Plugin, Cordova} from './plugin'; +import {Plugin, Cordova, InstanceProperty, CordovaInstance} from './plugin'; export interface ContactProperties { /** A globally unique identifier. */ @@ -58,53 +58,61 @@ export class Contact { private _objectInstance: any; - get id(): string { - return this._objectInstance.id; - } - set id(val: string) { - this._objectInstance.id = val; - } - get displayName(): string { - return this._objectInstance.displayName; - } - set displayName(val: string){ - this._objectInstance.displayName = val; - } - get name(): ContactName { - return this._objectInstance.name; - } - set name(val: ContactName){ - this._objectInstance.name = val; - } - get nickname(): string { - return this._objectInstance.nickname; - } - set nickname(val: string){ - this._objectInstance.nickname = val; - } - get phoneNumbers(): ContactField[] { - return this._objectInstance.phoneNumbers; - } - set phoneNumbers(val: ContactField[]){ - this._objectInstance.phoneNumbers = val; - } - get emails(): ContactField[] { - return this._objectInstance.emails; - } - set emails(val: ContactField[]){ - this._objectInstance.emails = val; - } - get addresses(): ContactAddress[] { - return this._objectInstance.addresses; - } - set addresses(val: ContactAddress[]){ - this._objectInstance.addresses = val; - } + @InstanceProperty + get id() {return; } + + @InstanceProperty + get displayName() {return; } + + @InstanceProperty + get nickname() {return; } + + @InstanceProperty + get phoneNumbers() {return; } + + @InstanceProperty + get emails() {return; } + + @InstanceProperty + get addresses() {return; } + + @InstanceProperty + get ims() {return; } + + @InstanceProperty + get organizations() {return; } + + @InstanceProperty + get birthday() {return; } + + @InstanceProperty + get note() {return; } + + @InstanceProperty + get photos() {return; } + + @InstanceProperty + get categories() {return; } + + @InstanceProperty + get urls() {return; } + constructor () { - // creat eobj + this._objectInstance = navigator.contacts.create(); } + clone(): Contact { + // TODO manually clone the object + return; + } + + @CordovaInstance() + remove(): Promise {return; } + + @CordovaInstance() + save(): Promise {return; } + } interface ContactError { From ab9af2bdc41b41cb1201c99d7469edd44aa7728f Mon Sep 17 00:00:00 2001 From: Ibrahim Hadeed Date: Sat, 30 Apr 2016 17:50:08 -0400 Subject: [PATCH 3/7] pre-final plugin rewrite --- src/plugins/contacts.ts | 248 ++++++++++++++++++++-------------------- 1 file changed, 122 insertions(+), 126 deletions(-) diff --git a/src/plugins/contacts.ts b/src/plugins/contacts.ts index afaa603c2..e280aa124 100644 --- a/src/plugins/contacts.ts +++ b/src/plugins/contacts.ts @@ -1,6 +1,13 @@ import {Plugin, Cordova, InstanceProperty, CordovaInstance} from './plugin'; - -export interface ContactProperties { +declare var window: any = { + ContactAddress: (...args) => {}, + ContactProperties: (...args) => {}, + ContactOrganization: (...args) => {}, + ContactName: (...args) => {}, + ContactField: (...args) => {}, + ContactFindOptions: (...args) => {} +}; +export interface IContactProperties { /** A globally unique identifier. */ id?: string; /** The name of this Contact, suitable for display to end users. */ @@ -10,13 +17,13 @@ export interface ContactProperties { /** A casual name by which to address the contact. */ nickname?: string; /** An array of all the contact's phone numbers. */ - phoneNumbers?: ContactField[]; + phoneNumbers?: IContactField[]; /** An array of all the contact's email addresses. */ - emails?: ContactField[]; + emails?: IContactField[]; /** An array of all the contact's addresses. */ addresses?: ContactAddress[]; /** An array of all the contact's IM addresses. */ - ims?: ContactField[]; + ims?: IContactField[]; /** An array of all the contact's organizations. */ organizations?: ContactOrganization[]; /** The birthday of the contact. */ @@ -24,36 +31,13 @@ export interface ContactProperties { /** A note about the contact. */ note?: string; /** An array of the contact's photos. */ - photos?: ContactField[]; + photos?: IContactField[]; /** An array of all the user-defined categories associated with the contact. */ - categories?: ContactField[]; + categories?: IContactField[]; /** An array of web pages associated with the contact. */ - urls?: ContactField[]; + urls?: IContactField[]; } -// export interface Contact extends ContactProperties { -// /** -// * Returns a new Contact object that is a deep copy of the calling object, with the id property set to null -// */ -// clone(): Contact; -// /** -// * Removes the contact from the device contacts database, otherwise executes an error callback with a ContactError object. -// * @param onSuccess Success callback function invoked on success operation. -// * @param onError Error callback function, invoked when an error occurs. -// */ -// remove( -// onSuccess?: () => void, -// onError?: (error: Error) => void): void; -// /** -// * Saves a new contact to the device contacts database, or updates an existing contact if a contact with the same id already exists. -// * @param onSuccess Success callback function invoked on success operation with che Contact object. -// * @param onError Error callback function, invoked when an error occurs. -// */ -// save( -// onSuccess?: (contact: Contact) => void, -// onError?: (error: Error) => void): void; -// } - export class Contact { private _objectInstance: any; @@ -115,7 +99,7 @@ export class Contact { } -interface ContactError { +interface IContactError { /** Error code */ code: number; /** Error message */ @@ -123,7 +107,7 @@ interface ContactError { } declare var ContactError: { - new(code: number): ContactError; + new(code: number): IContactError; UNKNOWN_ERROR: number; INVALID_ARGUMENT_ERROR: number; TIMEOUT_ERROR: number; @@ -133,7 +117,7 @@ declare var ContactError: { PERMISSION_DENIED_ERROR: number }; -export interface ContactName { +export interface IContactName { /** The complete name of the contact. */ formatted?: string; /** The contact's family name. */ @@ -148,32 +132,28 @@ export interface ContactName { honorificSuffix?: string; } -// declare var ContactName: { -// /** Constructor for ContactName object */ -// new(formatted?: string, -// familyName?: string, -// givenName?: string, -// middleName?: string, -// honorificPrefix?: string, -// honorificSuffix?: string): ContactName -// }; - -export class ContactName { +export class ContactName implements IContactName { private _objectInstance: any; - constructor() { } + constructor(formatted?: string, familyName?: string, givenName?: string, middleName?: string, honorificPrefix?: string, honorificSuffix?: string) { + this._objectInstance = new window.ContactName(formatted, familyName, givenName, middleName, honorificPrefix, honorificSuffix); + } - public set givenName(val: string) { - this._objectInstance.givenName = val; - } - public set familyName(val: string) { - this._objectInstance.familyName = val; - } - public get givenName(): string {return this._objectInstance.givenName; } - public get familyName(): string {return this._objectInstance.familyName; } + @InstanceProperty + get formatted(): string {return; } + @InstanceProperty + get familyName(): string {return; } + @InstanceProperty + get givenName(): string {return; } + @InstanceProperty + get middleName(): string {return; } + @InstanceProperty + get honorificPrefix(): string {return; } + @InstanceProperty + get honorificSuffix(): string {return; } } -export interface ContactField { +export interface IContactField { /** A string that indicates what type of field this is, home for example. */ type: string; /** The value of the field, such as a phone number or email address. */ @@ -182,14 +162,20 @@ export interface ContactField { pref: boolean; } -declare var ContactField: { - /** Constructor for ContactField object */ - new(type?: string, - value?: string, - pref?: boolean): ContactField -}; +export class ContactField implements IContactField { + private _objectInstance: any; + constructor(type?: string, value?: string, pref?: boolean) { + this._objectInstance = new window.ContactField(type, value, pref); + } + @InstanceProperty + get type(): string {return; } + @InstanceProperty + get value(): string {return; } + @InstanceProperty + get pref(): boolean {return; } +} -export interface ContactAddress { +export interface IContactAddress { /** Set to true if this ContactAddress contains the user's preferred value. */ pref?: boolean; /** A string indicating what type of field this is, home for example. */ @@ -208,19 +194,46 @@ export interface ContactAddress { country?: string; } -declare var ContactAddress: { - /** Constructor of ContactAddress object */ - new(pref?: boolean, - type?: string, - formatted?: string, - streetAddress?: string, - locality?: string, - region?: string, - postalCode?: string, - country?: string): ContactAddress -}; +export class ContactAddress implements IContactAddress { + private _objectInstance: any; -export interface ContactOrganization { + constructor (pref?: boolean, + type?: string, + formatted?: string, + streetAddress?: string, + locality?: string, + region?: string, + postalCode?: string, + country?: string) { + this._objectInstance = new window.ContactAddress(pref, type, formatted, streetAddress, locality, region, postalCode, country); + } + + @InstanceProperty + get pref(): boolean {return; } + + @InstanceProperty + get type(): string {return; } + + @InstanceProperty + get formatted(): string {return; } + + @InstanceProperty + get streetAddress(): string {return; } + + @InstanceProperty + get locality(): string {return; } + + @InstanceProperty + get region(): string {return; } + + @InstanceProperty + get postalCode(): string {return; } + + @InstanceProperty + get country(): string {return; } +} + +export interface IContactOrganization { /** Set to true if this ContactOrganization contains the user's preferred value. */ pref?: boolean; /** A string that indicates what type of field this is, home for example. */ @@ -233,17 +246,29 @@ export interface ContactOrganization { title?: string; } -declare var ContactOrganization: { - /** Constructor for ContactOrganization object */ - new(pref?: boolean, - type?: string, - name?: string, - department?: string, - title?: string): ContactOrganization -}; +export class ContactOrganization implements IContactOrganization { + private _objectInstance: any; + constructor () { + this._objectInstance = new window.ContactOrganization(); + } + @InstanceProperty + get pref(): boolean {return; } + + @InstanceProperty + get type(): string {return; } + + @InstanceProperty + get name(): string {return; } + + @InstanceProperty + get department(): string {return; } + + @InstanceProperty + get title(): string {return; } +} /** Search options to filter navigator.contacts. */ -interface ContactFindOptions { +interface IContactFindOptions { /** The search string used to find navigator.contacts. */ filter?: string; /** Determines if the find operation returns multiple navigator.contacts. */ @@ -252,36 +277,24 @@ interface ContactFindOptions { desiredFields?: string[]; } -declare var ContactFindOptions: { - /** Constructor for ContactFindOptions object */ - new(filter?: string, - multiple?: boolean, - desiredFields?: string[]): ContactFindOptions -}; - -export class ContactFindOptions { +export class ContactFindOptions implements IContactFindOptions { private _objectInstance: any; - public set filter(val: string) { - this._objectInstance.filter = val; + constructor () { + this._objectInstance = new window.ContactFindOptions(); } + @InstanceProperty + public get filter(): string {return; } - public set multiple(val: boolean) { - this._objectInstance.multiple = val; - } + @InstanceProperty + public get multiple(): boolean {return; } - public set desiredFields(val) { - this._objectInstance.desiredFields = val; - } + @InstanceProperty + public get desiredFields(): any {return; } - public set hasPhoneNumber(val: boolean) { - this._objectInstance.hasPhoneNumber = val; - } + @InstanceProperty + public get hasPhoneNumber(): boolean {return; } } -// declare var Contact: { -// new(): Contact -// }; - /** * @name Contacts * @description @@ -311,28 +324,11 @@ export class ContactFindOptions { }) export class Contacts { - private _objectInstance: any; - - public set displayName(val: string) { - this._objectInstance.displayName = val; + static create(): Contact { + return new Contact(); } - public set nickname(val: boolean) { - this._objectInstance.nickname = val; - } - - get displayName() {return this._objectInstance.displayName; } - get nickname() {return this._objectInstance.nickname; } - - /** - * Create a new Contact object. - * - * @param options {Object} Object whose properties the created Contact should have. - * @return {Contact} Returns the created contact - */ - constructor (options?: ContactProperties) { - this._objectInstance = navigator.contacts(options); - }; + // TODO add fieldType options /** * Search for contacts in the Contacts list. From dfdd476ac9aed092e600537bc77af25aec25a974 Mon Sep 17 00:00:00 2001 From: Ibrahim Hadeed Date: Sat, 30 Apr 2016 17:52:14 -0400 Subject: [PATCH 4/7] pre-final plugin rewrite --- src/plugins/contacts.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/plugins/contacts.ts b/src/plugins/contacts.ts index e280aa124..869bf74e7 100644 --- a/src/plugins/contacts.ts +++ b/src/plugins/contacts.ts @@ -1,7 +1,6 @@ import {Plugin, Cordova, InstanceProperty, CordovaInstance} from './plugin'; declare var window: any = { ContactAddress: (...args) => {}, - ContactProperties: (...args) => {}, ContactOrganization: (...args) => {}, ContactName: (...args) => {}, ContactField: (...args) => {}, @@ -38,7 +37,7 @@ export interface IContactProperties { urls?: IContactField[]; } -export class Contact { +export class Contact implements IContactProperties { private _objectInstance: any; From 6d94c1dfa26b2992c550b6258f1aeb33e1a0240e Mon Sep 17 00:00:00 2001 From: Ibrahim Hadeed Date: Thu, 9 Jun 2016 23:11:51 -0400 Subject: [PATCH 5/7] Fixes --- src/plugins/contacts.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/plugins/contacts.ts b/src/plugins/contacts.ts index 869bf74e7..31cce2f70 100644 --- a/src/plugins/contacts.ts +++ b/src/plugins/contacts.ts @@ -1,11 +1,5 @@ import {Plugin, Cordova, InstanceProperty, CordovaInstance} from './plugin'; -declare var window: any = { - ContactAddress: (...args) => {}, - ContactOrganization: (...args) => {}, - ContactName: (...args) => {}, - ContactField: (...args) => {}, - ContactFindOptions: (...args) => {} -}; +declare var window: any; export interface IContactProperties { /** A globally unique identifier. */ id?: string; @@ -37,7 +31,7 @@ export interface IContactProperties { urls?: IContactField[]; } -export class Contact implements IContactProperties { +export class Contact { private _objectInstance: any; From 411e6fc2a161a84edb3a22dd89bf55078c804f98 Mon Sep 17 00:00:00 2001 From: Ibrahim Hadeed Date: Fri, 10 Jun 2016 01:10:50 -0400 Subject: [PATCH 6/7] tweaks to make contact plugin work better --- src/index.ts | 1 + src/plugins/contacts.ts | 198 ++++++++++++---------------------------- src/plugins/plugin.ts | 4 +- 3 files changed, 60 insertions(+), 143 deletions(-) diff --git a/src/index.ts b/src/index.ts index e75461475..d104d99db 100644 --- a/src/index.ts +++ b/src/index.ts @@ -66,6 +66,7 @@ import {Vibration} from './plugins/vibration'; import {WebIntent} from './plugins/webintent'; export * from './plugins/googlemaps'; export * from './plugins/3dtouch'; +export * from './plugins/contacts'; export { ActionSheet, AdMob, diff --git a/src/plugins/contacts.ts b/src/plugins/contacts.ts index 31cce2f70..7b79efae7 100644 --- a/src/plugins/contacts.ts +++ b/src/plugins/contacts.ts @@ -1,5 +1,6 @@ import {Plugin, Cordova, InstanceProperty, CordovaInstance} from './plugin'; -declare var window: any; +declare var window: any, + navigator: any; export interface IContactProperties { /** A globally unique identifier. */ id?: string; @@ -30,75 +31,43 @@ export interface IContactProperties { /** An array of web pages associated with the contact. */ urls?: IContactField[]; } - export class Contact { - private _objectInstance: any; - - @InstanceProperty - get id() {return; } - - @InstanceProperty - get displayName() {return; } - - @InstanceProperty - get nickname() {return; } - - @InstanceProperty - get phoneNumbers() {return; } - - @InstanceProperty - get emails() {return; } - - @InstanceProperty - get addresses() {return; } - - @InstanceProperty - get ims() {return; } - - @InstanceProperty - get organizations() {return; } - - @InstanceProperty - get birthday() {return; } - - @InstanceProperty - get note() {return; } - - @InstanceProperty - get photos() {return; } - - @InstanceProperty - get categories() {return; } - - @InstanceProperty - get urls() {return; } - - + @InstanceProperty get id() {return; } + @InstanceProperty get displayName() {return; } + @InstanceProperty get nickname() {return; } + @InstanceProperty get phoneNumbers() {return; } + @InstanceProperty get emails() {return; } + @InstanceProperty get addresses() {return; } + @InstanceProperty get ims() {return; } + @InstanceProperty get organizations() {return; } + @InstanceProperty get birthday() {return; } + @InstanceProperty get note() {return; } + @InstanceProperty get photos() {return; } + @InstanceProperty get categories() {return; } + @InstanceProperty get urls() {return; } constructor () { this._objectInstance = navigator.contacts.create(); } - clone(): Contact { - // TODO manually clone the object - return; + let newContact = new Contact(); + for (let prop in this) { + if (prop === 'id') return; + newContact[prop] = this[prop]; + } + return newContact; } - @CordovaInstance() remove(): Promise {return; } - @CordovaInstance() save(): Promise {return; } - } - interface IContactError { /** Error code */ code: number; /** Error message */ message: string; } - declare var ContactError: { new(code: number): IContactError; UNKNOWN_ERROR: number; @@ -109,7 +78,6 @@ declare var ContactError: { NOT_SUPPORTED_ERROR: number; PERMISSION_DENIED_ERROR: number }; - export interface IContactName { /** The complete name of the contact. */ formatted?: string; @@ -124,26 +92,17 @@ export interface IContactName { /** The contact's suffix (example Esq.). */ honorificSuffix?: string; } - export class ContactName implements IContactName { private _objectInstance: any; - constructor(formatted?: string, familyName?: string, givenName?: string, middleName?: string, honorificPrefix?: string, honorificSuffix?: string) { this._objectInstance = new window.ContactName(formatted, familyName, givenName, middleName, honorificPrefix, honorificSuffix); } - - @InstanceProperty - get formatted(): string {return; } - @InstanceProperty - get familyName(): string {return; } - @InstanceProperty - get givenName(): string {return; } - @InstanceProperty - get middleName(): string {return; } - @InstanceProperty - get honorificPrefix(): string {return; } - @InstanceProperty - get honorificSuffix(): string {return; } + @InstanceProperty get formatted(): string {return; } + @InstanceProperty get familyName(): string {return; } + @InstanceProperty get givenName(): string {return; } + @InstanceProperty get middleName(): string {return; } + @InstanceProperty get honorificPrefix(): string {return; } + @InstanceProperty get honorificSuffix(): string {return; } } export interface IContactField { @@ -160,12 +119,9 @@ export class ContactField implements IContactField { constructor(type?: string, value?: string, pref?: boolean) { this._objectInstance = new window.ContactField(type, value, pref); } - @InstanceProperty - get type(): string {return; } - @InstanceProperty - get value(): string {return; } - @InstanceProperty - get pref(): boolean {return; } + @InstanceProperty get type(): string {return; } + @InstanceProperty get value(): string {return; } + @InstanceProperty get pref(): boolean {return; } } export interface IContactAddress { @@ -189,7 +145,6 @@ export interface IContactAddress { export class ContactAddress implements IContactAddress { private _objectInstance: any; - constructor (pref?: boolean, type?: string, formatted?: string, @@ -200,30 +155,14 @@ export class ContactAddress implements IContactAddress { country?: string) { this._objectInstance = new window.ContactAddress(pref, type, formatted, streetAddress, locality, region, postalCode, country); } - - @InstanceProperty - get pref(): boolean {return; } - - @InstanceProperty - get type(): string {return; } - - @InstanceProperty - get formatted(): string {return; } - - @InstanceProperty - get streetAddress(): string {return; } - - @InstanceProperty - get locality(): string {return; } - - @InstanceProperty - get region(): string {return; } - - @InstanceProperty - get postalCode(): string {return; } - - @InstanceProperty - get country(): string {return; } + @InstanceProperty get pref(): boolean {return; } + @InstanceProperty get type(): string {return; } + @InstanceProperty get formatted(): string {return; } + @InstanceProperty get streetAddress(): string {return; } + @InstanceProperty get locality(): string {return; } + @InstanceProperty get region(): string {return; } + @InstanceProperty get postalCode(): string {return; } + @InstanceProperty get country(): string {return; } } export interface IContactOrganization { @@ -244,24 +183,15 @@ export class ContactOrganization implements IContactOrganization { constructor () { this._objectInstance = new window.ContactOrganization(); } - @InstanceProperty - get pref(): boolean {return; } - - @InstanceProperty - get type(): string {return; } - - @InstanceProperty - get name(): string {return; } - - @InstanceProperty - get department(): string {return; } - - @InstanceProperty - get title(): string {return; } + @InstanceProperty get pref(): boolean {return; } + @InstanceProperty get type(): string {return; } + @InstanceProperty get name(): string {return; } + @InstanceProperty get department(): string {return; } + @InstanceProperty get title(): string {return; } } /** Search options to filter navigator.contacts. */ -interface IContactFindOptions { +export interface IContactFindOptions { /** The search string used to find navigator.contacts. */ filter?: string; /** Determines if the find operation returns multiple navigator.contacts. */ @@ -275,37 +205,29 @@ export class ContactFindOptions implements IContactFindOptions { constructor () { this._objectInstance = new window.ContactFindOptions(); } - @InstanceProperty - public get filter(): string {return; } - - @InstanceProperty - public get multiple(): boolean {return; } - - @InstanceProperty - public get desiredFields(): any {return; } - - @InstanceProperty - public get hasPhoneNumber(): boolean {return; } + @InstanceProperty get filter(): string {return; } + @InstanceProperty get multiple(): boolean {return; } + @InstanceProperty get desiredFields(): any {return; } + @InstanceProperty get hasPhoneNumber(): boolean {return; } } - /** * @name Contacts * @description * Access and manage Contacts on the device. * - * Requires plugin: `cordova-plugin-contacts` - * For full info, please see the [Cordova Contacts plugin docs](https://github.com/apache/cordova-plugin-contacts) - * * @usage * * ```js - * import {Contacts} from 'ionic-native'; + * import {Contact} from 'ionic-native'; * * * - * Contacts.create({ - * displayName: "Mr. Ionitron" - * }).then((contact) => {}, (err) => {}) + * let contact = new Contact(); + * contact.displayName = "Mr. Ionitron"; + * contact.save().then( + * () => console.log("Contact saved!", contact), + * (error: any) => console.error("Error saving contact.", error) + * ); * ``` * * @@ -316,13 +238,9 @@ export class ContactFindOptions implements IContactFindOptions { repo: 'https://github.com/apache/cordova-plugin-contacts' }) export class Contacts { - static create(): Contact { return new Contact(); } - - // TODO add fieldType options - /** * Search for contacts in the Contacts list. * @@ -345,12 +263,10 @@ export class Contacts { errorIndex: 2 }) static find(fields: string[], options?: any): Promise { return; } - - /** * Select a single Contact. * @return Returns a Promise that resolves with the selected Contact */ @Cordova() - static pickContact(): Promise { return; } -} + static pickContact(): Promise {return; } +} \ No newline at end of file diff --git a/src/plugins/plugin.ts b/src/plugins/plugin.ts index f5b385690..1e64fa9eb 100644 --- a/src/plugins/plugin.ts +++ b/src/plugins/plugin.ts @@ -323,13 +323,13 @@ export function CordovaProperty(target: Function, key: string, descriptor: Typed * @param descriptor * @constructor */ -export function InstanceProperty(target: Function, key: string, descriptor: TypedPropertyDescriptor) { +export function InstanceProperty(target: any, key: string, descriptor: TypedPropertyDescriptor) { descriptor.get = function() { return this._objectInstance[key]; }; descriptor.set = function(...args: any[]) { - return this._objectInstance[key] = args[0]; + this._objectInstance[key] = args[0]; }; return descriptor; From b9ae123d030a15dfe933c7a8546e6b2f41f4923c Mon Sep 17 00:00:00 2001 From: Ibrahim Hadeed Date: Fri, 10 Jun 2016 02:03:21 -0400 Subject: [PATCH 7/7] add missing types --- src/plugins/contacts.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/plugins/contacts.ts b/src/plugins/contacts.ts index 7b79efae7..17c8cb675 100644 --- a/src/plugins/contacts.ts +++ b/src/plugins/contacts.ts @@ -33,19 +33,19 @@ export interface IContactProperties { } export class Contact { private _objectInstance: any; - @InstanceProperty get id() {return; } - @InstanceProperty get displayName() {return; } - @InstanceProperty get nickname() {return; } - @InstanceProperty get phoneNumbers() {return; } - @InstanceProperty get emails() {return; } - @InstanceProperty get addresses() {return; } - @InstanceProperty get ims() {return; } - @InstanceProperty get organizations() {return; } - @InstanceProperty get birthday() {return; } - @InstanceProperty get note() {return; } - @InstanceProperty get photos() {return; } - @InstanceProperty get categories() {return; } - @InstanceProperty get urls() {return; } + @InstanceProperty get id(): string {return; } + @InstanceProperty get displayName(): string {return; } + @InstanceProperty get nickname(): ContactName {return; } + @InstanceProperty get phoneNumbers(): string {return; } + @InstanceProperty get emails(): IContactField[] {return; } + @InstanceProperty get addresses(): ContactAddress[] {return; } + @InstanceProperty get ims(): IContactField[] {return; } + @InstanceProperty get organizations(): ContactOrganization[] {return; } + @InstanceProperty get birthday(): Date {return; } + @InstanceProperty get note(): string {return; } + @InstanceProperty get photos(): IContactField[] {return; } + @InstanceProperty get categories(): IContactField[] {return; } + @InstanceProperty get urls(): IContactField[] {return; } constructor () { this._objectInstance = navigator.contacts.create(); }