From 804c9ee4634976e059c7b2e3cdd5b4817766a29c Mon Sep 17 00:00:00 2001 From: Christopher Manouvrier Date: Tue, 5 Apr 2016 21:55:24 +1000 Subject: [PATCH 1/4] feat(plugin): add email composer plugin --- src/index.ts | 3 ++ src/plugins/emailcomposer.ts | 63 ++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/plugins/emailcomposer.ts diff --git a/src/index.ts b/src/index.ts index 6044e5dea..bfc2b22e8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -25,6 +25,7 @@ import {DeviceMotion} from './plugins/devicemotion'; import {DeviceOrientation} from './plugins/deviceorientation'; import {Diagnostic} from './plugins/diagnostic'; import {Dialogs} from './plugins/dialogs'; +import {EmailComposer} from './plugins/emailcomposer'; import {Facebook} from './plugins/facebook'; import {File} from './plugins/file'; import {Flashlight} from './plugins/flashlight'; @@ -69,6 +70,7 @@ export { DeviceOrientation, Dialogs, Diagnostic, + EmailComposer, Facebook, File, Flashlight, @@ -117,6 +119,7 @@ window['IonicNative'] = { DeviceOrientation: DeviceOrientation, Dialogs: Dialogs, Diagnostic: Diagnostic, + EmailComposer: EmailComposer, Facebook: Facebook, File: File, Flashlight: Flashlight, diff --git a/src/plugins/emailcomposer.ts b/src/plugins/emailcomposer.ts new file mode 100644 index 000000000..6d5d9b4a9 --- /dev/null +++ b/src/plugins/emailcomposer.ts @@ -0,0 +1,63 @@ +import {Plugin, Cordova} from './plugin'; + +/** + * Email object for Opening Email Composer + */ +export interface email { + to: string | Array, + cc: string | Array, + bcc: string | Array, + attachments: Array, + subject: string, + body: string, + isHtml: boolean +} + +/** + * @name Email Composer + * @description + * + * Requires Cordova plugin: cordova-plugin-email-composer. For more info, please see the [Email Composer plugin docs](https://github.com/katzer/cordova-plugin-email-composer). + * + * @usage + * ```ts + * import {EmailComposer} from 'ionic-native'; + * + * + * let email = { + * to: 'max@mustermann.de', + * cc: 'erika@mustermann.de', + * bcc: ['john@doe.com', 'jane@doe.com'], + * attachments: [ + * 'file://img/logo.png', + * 'res://icon.png', + * 'base64:icon.png//iVBORw0KGgoAAAANSUhEUg...', + * 'file://README.pdf' + * ], + * subject: 'Cordova Icons', + * body: 'How are you? Nice greetings from Leipzig', + * isHtml: true + * }; + * + * // Send a text message using default options + * EmailComposer.send(email); + * + * ``` + */ +@Plugin({ + plugin: 'cordova-plugin-email-composer', + pluginRef: 'emailComposer', + repo: 'https://github.com/katzer/cordova-plugin-email-composer.git', + platforms: ['Android', 'iOS', 'Windows Phone 8'] +}) +export class EmailComposer { + + /** + * Opens Email Composer with email contents + * @param email {email} Email + * @returns {Promise} Resolves promise when the EmailComposer has been opened + */ + @Cordova() + static open(email: email): Promise { return } + +} From 213330379db07483eea756254f53c6cd5ea4eb9c Mon Sep 17 00:00:00 2001 From: Christopher Manouvrier Date: Wed, 6 Apr 2016 00:24:50 +1000 Subject: [PATCH 2/4] Update methods and pluginRef --- src/plugins/emailcomposer.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/plugins/emailcomposer.ts b/src/plugins/emailcomposer.ts index 6d5d9b4a9..14ebbcdb3 100644 --- a/src/plugins/emailcomposer.ts +++ b/src/plugins/emailcomposer.ts @@ -46,18 +46,27 @@ export interface email { */ @Plugin({ plugin: 'cordova-plugin-email-composer', - pluginRef: 'emailComposer', + pluginRef: 'cordova.plugins.email', repo: 'https://github.com/katzer/cordova-plugin-email-composer.git', platforms: ['Android', 'iOS', 'Windows Phone 8'] }) export class EmailComposer { + + @Cordova() + static isAvailable() : Promise {return} + @Cordova() + static addAlias(app: String, schema: any) : Promise {return} + /** * Opens Email Composer with email contents * @param email {email} Email * @returns {Promise} Resolves promise when the EmailComposer has been opened */ - @Cordova() - static open(email: email): Promise { return } + @Cordova({ + successIndex: 1, + errorIndex: 3 + }) + static open(email: email, scope : any) : Promise {return} } From f96ec32be7eb9a62db6aef22afa5162f82502fe4 Mon Sep 17 00:00:00 2001 From: Christopher Manouvrier Date: Wed, 6 Apr 2016 21:00:26 +1000 Subject: [PATCH 3/4] Fix is available callback --- src/plugins/emailcomposer.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/plugins/emailcomposer.ts b/src/plugins/emailcomposer.ts index 14ebbcdb3..076b8cadc 100644 --- a/src/plugins/emailcomposer.ts +++ b/src/plugins/emailcomposer.ts @@ -4,6 +4,7 @@ import {Plugin, Cordova} from './plugin'; * Email object for Opening Email Composer */ export interface email { + app?: string, to: string | Array, cc: string | Array, bcc: string | Array, @@ -52,11 +53,14 @@ export interface email { }) export class EmailComposer { - @Cordova() - static isAvailable() : Promise {return} + @Cordova({ + successIndex: 1, + errorIndex: 3 + }) + static isAvailable(app: string, scope: any) : Promise {return} @Cordova() - static addAlias(app: String, schema: any) : Promise {return} + static addAlias(alias: string, packageName: string): void {} /** * Opens Email Composer with email contents @@ -67,6 +71,6 @@ export class EmailComposer { successIndex: 1, errorIndex: 3 }) - static open(email: email, scope : any) : Promise {return} + static open(email: email, scope: any) : Promise {return} } From ce92e6ac8f8e1722ed173ccc0bdf28361549d636 Mon Sep 17 00:00:00 2001 From: Christopher Manouvrier Date: Wed, 6 Apr 2016 22:06:46 +1000 Subject: [PATCH 4/4] Refactor isAvailable --- src/plugins/emailcomposer.ts | 39 ++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/src/plugins/emailcomposer.ts b/src/plugins/emailcomposer.ts index 076b8cadc..d07e46d49 100644 --- a/src/plugins/emailcomposer.ts +++ b/src/plugins/emailcomposer.ts @@ -1,5 +1,7 @@ import {Plugin, Cordova} from './plugin'; +declare var cordova; + /** * Email object for Opening Email Composer */ @@ -24,6 +26,12 @@ export interface email { * ```ts * import {EmailComposer} from 'ionic-native'; * + * + * EmailComposer.isAvailable().then((available) =>{ + * if(available) { + * //Now we know we can send + * } + * }); * * let email = { * to: 'max@mustermann.de', @@ -53,24 +61,39 @@ export interface email { }) export class EmailComposer { - @Cordova({ - successIndex: 1, - errorIndex: 3 - }) - static isAvailable(app: string, scope: any) : Promise {return} + /** + * Verifies if sending emails is supported on the device. + * + * @param app {string?} An optional app id or uri scheme. Defaults to mailto. + * @param scope {any?} An optional scope for the promise + * @returns {Promise} Resolves promise with boolean whether EmailComposer is available + */ + static isAvailable (app? : string, scope? : any) : Promise { + return new Promise((resolve, reject) => { + cordova.plugins.email.isAvailable(app, resolve, scope); + }); + } + /** + * Adds a new mail app alias. + * + * @param alias {string} The alias name + * @param packageName {string} The package name + */ @Cordova() - static addAlias(alias: string, packageName: string): void {} + static addAlias(alias : string, packageName : string): void {} /** - * Opens Email Composer with email contents + * Displays the email composer pre-filled with data. + * * @param email {email} Email + * @param scope {any?} An optional scope for the promise * @returns {Promise} Resolves promise when the EmailComposer has been opened */ @Cordova({ successIndex: 1, errorIndex: 3 }) - static open(email: email, scope: any) : Promise {return} + static open(email : email, scope? : any) : Promise {return} }