2015-11-28 03:49:24 +08:00
|
|
|
{MessageViewExtension, RegExpUtils} = require 'nylas-exports'
|
2015-07-24 01:57:13 +08:00
|
|
|
|
|
|
|
TrackingBlacklist = [{
|
|
|
|
name: 'Sidekick',
|
|
|
|
pattern: 't.signaux',
|
|
|
|
homepage: 'http://getsidekick.com'
|
|
|
|
}, {
|
|
|
|
name: 'Sidekick',
|
|
|
|
pattern: 't.senal',
|
|
|
|
homepage: 'http://getsidekick.com'
|
|
|
|
}, {
|
|
|
|
name: 'Sidekick',
|
|
|
|
pattern: 't.sidekickopen',
|
|
|
|
homepage: 'http://getsidekick.com'
|
|
|
|
}, {
|
|
|
|
name: 'Sidekick',
|
|
|
|
pattern: 't.sigopn',
|
|
|
|
homepage: 'http://getsidekick.com'
|
|
|
|
}, {
|
|
|
|
name: 'Banana Tag',
|
|
|
|
pattern: 'bl-1.com',
|
|
|
|
homepage: 'http://bananatag.com'
|
|
|
|
}, {
|
|
|
|
name: 'Boomerang',
|
|
|
|
pattern: 'mailstat.us/tr',
|
|
|
|
homepage: 'http://boomeranggmail.com'
|
|
|
|
}, {
|
|
|
|
name: 'Cirrus Inisght',
|
|
|
|
pattern: 'tracking.cirrusinsight.com',
|
|
|
|
homepage: 'http://cirrusinsight.com'
|
|
|
|
}, {
|
|
|
|
name: 'Yesware',
|
|
|
|
pattern: 'app.yesware.com',
|
|
|
|
homepage: 'http://yesware.com'
|
|
|
|
}, {
|
|
|
|
name: 'Yesware',
|
|
|
|
pattern: 't.yesware.com',
|
|
|
|
homepage: 'http://yesware.com'
|
|
|
|
}, {
|
|
|
|
name: 'Streak',
|
|
|
|
pattern: 'mailfoogae.appspot.com',
|
|
|
|
homepage: 'http://streak.com'
|
|
|
|
}, {
|
|
|
|
name: 'LaunchBit',
|
|
|
|
pattern: 'launchbit.com/taz-pixel',
|
|
|
|
homepage: 'http://launchbit.com'
|
|
|
|
}, {
|
|
|
|
name: 'MailChimp',
|
|
|
|
pattern: 'list-manage.com/track',
|
|
|
|
homepage: 'http://mailchimp.com'
|
|
|
|
}, {
|
|
|
|
name: 'Postmark',
|
|
|
|
pattern: 'cmail1.com/t',
|
|
|
|
homepage: 'http://postmarkapp.com'
|
|
|
|
}, {
|
|
|
|
name: 'iContact',
|
|
|
|
pattern: 'click.icptrack.com/icp/',
|
|
|
|
homepage: 'http://icontact.com'
|
|
|
|
}, {
|
|
|
|
name: 'Infusionsoft',
|
|
|
|
pattern: 'infusionsoft.com/app/emailOpened',
|
|
|
|
homepage: 'http://infusionsoft.com'
|
|
|
|
}, {
|
|
|
|
name: 'Intercom',
|
|
|
|
pattern: 'via.intercom.io/o',
|
|
|
|
homepage: 'http://intercom.io'
|
|
|
|
}, {
|
|
|
|
name: 'Mandrill',
|
|
|
|
pattern: 'mandrillapp.com/track',
|
|
|
|
homepage: 'http://mandrillapp.com'
|
|
|
|
}, {
|
|
|
|
name: 'Hubspot',
|
|
|
|
pattern: 't.hsms06.com',
|
|
|
|
homepage: 'http://hubspot.com'
|
|
|
|
}, {
|
|
|
|
name: 'RelateIQ',
|
|
|
|
pattern: 'app.relateiq.com/t.png',
|
|
|
|
homepage: 'http://relateiq.com'
|
|
|
|
}, {
|
|
|
|
name: 'RJ Metrics',
|
|
|
|
pattern: 'go.rjmetrics.com',
|
|
|
|
homepage: 'http://rjmetrics.com'
|
|
|
|
}, {
|
|
|
|
name: 'Mixpanel',
|
|
|
|
pattern: 'api.mixpanel.com/track',
|
|
|
|
homepage: 'http://mixpanel.com'
|
|
|
|
}, {
|
|
|
|
name: 'Front App',
|
|
|
|
pattern: 'web.frontapp.com/api',
|
|
|
|
homepage: 'http://frontapp.com'
|
|
|
|
}, {
|
|
|
|
name: 'Mailtrack.io',
|
|
|
|
pattern: 'mailtrack.io/trace',
|
|
|
|
homepage: 'http://mailtrack.io'
|
|
|
|
}, {
|
|
|
|
name: 'Salesloft',
|
|
|
|
pattern: 'sdr.salesloft.com/email_trackers',
|
|
|
|
homepage: 'http://salesloft.com'
|
|
|
|
}]
|
|
|
|
|
2015-11-28 03:49:24 +08:00
|
|
|
class TrackingPixelsExtension extends MessageViewExtension
|
2015-07-24 01:57:13 +08:00
|
|
|
|
|
|
|
@formatMessageBody: (message) ->
|
|
|
|
return unless message.isFromMe()
|
|
|
|
|
|
|
|
regex = RegExpUtils.imageTagRegex()
|
|
|
|
body = message.body
|
|
|
|
spliceRegions = []
|
|
|
|
|
|
|
|
# Identify img tags that should be cut out
|
|
|
|
while (result = regex.exec(body)) isnt null
|
|
|
|
for item in TrackingBlacklist
|
|
|
|
if result[1].indexOf(item.pattern) > 0
|
|
|
|
spliceRegions.push(start: result.index, end: result.index + result[0].length)
|
|
|
|
continue
|
|
|
|
|
|
|
|
# Remove them all, from the end of the string to the start
|
|
|
|
spliceRegions.reverse().forEach ({start, end}) ->
|
|
|
|
body = body.substr(0, start) + body.substr(end)
|
|
|
|
message.body = body
|
|
|
|
|
|
|
|
module.exports = TrackingPixelsExtension
|