import uuid from 'node-uuid'; import {ComposerExtension, Actions, QuotedHTMLTransformer} from 'nylas-exports'; import {PLUGIN_ID, PLUGIN_URL} from './open-tracking-constants'; class DraftBody { constructor(draft) {this._body = draft.body} get unquoted() {return QuotedHTMLTransformer.removeQuotedHTML(this._body);} set unquoted(text) {this._body = QuotedHTMLTransformer.appendQuotedHTML(text, this._body);} get body() {return this._body} } export default class OpenTrackingComposerExtension extends ComposerExtension { static finalizeSessionBeforeSending({session}) { const draft = session.draft(); // grab message metadata, if any const metadata = draft.metadataForPluginId(PLUGIN_ID); if (metadata) { // generate a UID const uid = uuid.v4().replace(/-/g, ""); // insert a tracking pixel into the message const serverUrl = `http://${PLUGIN_URL}/open/${draft.accountId}/${uid}`; const img = ``; const draftBody = new DraftBody(draft); draftBody.unquoted = draftBody.unquoted + "
" + img; // save the draft session.changes.add({body: draftBody.body}); session.changes.commit(); // save the uid to draft metadata metadata.uid = uid; Actions.setMetadata(draft, PLUGIN_ID, metadata); } } }