diff --git a/extension/background.js b/extension/background.js index 2cf696b..00c2cf3 100644 --- a/extension/background.js +++ b/extension/background.js @@ -1,13 +1,119 @@ var browser = browser || chrome; +var PENDING_SUBMISSIONS = ':PENDING_SUBMISSIONS' +var MIGRATION = ':MIGRATION' + +var badIdentifiersArray = [ + 'archive.is', + 'archive.org', + 'assets.tumblr.com', + 'bit.ly', + 'blogspot.com', + 'facebook.com/a', + 'facebook.com/ad_campaign', + 'facebook.com/ads', + 'facebook.com/ajax', + 'facebook.com/bookmarks', + 'facebook.com/buddylist.php', + 'facebook.com/bugnub', + 'facebook.com/comment', + 'facebook.com/composer', + 'facebook.com/events', + 'facebook.com/findfriends', + 'facebook.com/friends', + 'facebook.com/fundraisers', + 'facebook.com/games', + 'facebook.com/groups', + 'facebook.com/help', + 'facebook.com/home.php', + 'facebook.com/intl', + 'facebook.com/jobs', + 'facebook.com/l.php', + 'facebook.com/language.php', + 'facebook.com/legal', + 'facebook.com/like.php', + 'facebook.com/local_surface', + 'facebook.com/logout.php', + 'facebook.com/mbasic', + 'facebook.com/menu', + 'facebook.com/messages', + 'facebook.com/nfx', + 'facebook.com/notes', + 'facebook.com/notifications.php', + 'facebook.com/notifications', + 'facebook.com/nt', + 'facebook.com/page', + 'facebook.com/pages', + 'facebook.com/people', + 'facebook.com/permalink.php', + 'facebook.com/pg', + 'facebook.com/photo.php', + 'facebook.com/policies', + 'facebook.com/privacy', + 'facebook.com/profile.php', + 'facebook.com/rapid_report', + 'facebook.com/reactions', + 'facebook.com/salegroups', + 'facebook.com/search', + 'facebook.com/settings', + 'facebook.com/shares', + 'facebook.com/story.php', + 'facebook.com/ufi', + 'media.tumblr.com', + 'medium.com', + 'reddit.com', + 'reddit.com/r/all', + 'reddit.com/r/popular', + 'removeddit.com', + 't.co', + 't.umblr.com', + 'tumblr.com', + 'twitter.com', + 'twitter.com/hashtag', + 'twitter.com/i', + 'twitter.com/search', + 'twitter.com/settings', + 'twitter.com/threadreaderapp', + 'twitter.com/who_to_follow', + 'wordpress.com', + 'www.tumblr.com', + 'youtu.be', + 'youtube.com', + 'youtube.com/redirect', + 'youtube.com/watch', +]; +var badIdentifiers = {}; +badIdentifiersArray.forEach(x => badIdentifiers[x] = true); + var overrides = null; var accepted = false; var installationId = null; + browser.storage.local.get(['overrides', 'accepted', 'installationId'], v => { accepted = v.accepted overrides = v.overrides || {} + + var migration = overrides[MIGRATION] || 0; + var CURRENT_VERSION = 2; + if(migration < CURRENT_VERSION){ + + for(var key of Object.getOwnPropertyNames(overrides)){ + if(key.startsWith(':')) continue; + if(key != key.toLowerCase()){ + var v = overrides[key]; + delete overrides[key]; + overrides[key.toLowerCase()] = v; + } + } + + badIdentifiersArray.forEach(x => delete overrides[x]); + + overrides[MIGRATION] = CURRENT_VERSION; + browser.storage.local.set({ overrides: overrides }); + } + if (!v.installationId) { installationId = (Math.random() + '.' + Math.random() + '.' + Math.random()).replace(/\./g, ''); browser.storage.local.set({ installationId: installationId }); @@ -121,8 +227,6 @@ function submitPendingRatings() { } -var PENDING_SUBMISSIONS = ':PENDING_SUBMISSIONS' - function saveLabel(response) { if (accepted) { if (!overrides[PENDING_SUBMISSIONS]) { @@ -148,69 +252,6 @@ function openHelp() { }) } -var badIdentifiers = {}; -[ - 'facebook.com/a', - 'facebook.com/ad_campaign', - 'facebook.com/ads', - 'facebook.com/ajax', - 'facebook.com/bookmarks', - 'facebook.com/buddylist.php', - 'facebook.com/bugnub', - 'facebook.com/comment', - 'facebook.com/composer', - 'facebook.com/events', - 'facebook.com/findfriends', - 'facebook.com/friends', - 'facebook.com/fundraisers', - 'facebook.com/games', - 'facebook.com/groups', - 'facebook.com/help', - 'facebook.com/home.php', - 'facebook.com/intl', - 'facebook.com/jobs', - 'facebook.com/l.php', - 'facebook.com/language.php', - 'facebook.com/legal', - 'facebook.com/like.php', - 'facebook.com/local_surface', - 'facebook.com/logout.php', - 'facebook.com/mbasic', - 'facebook.com/menu', - 'facebook.com/messages', - 'facebook.com/nfx', - 'facebook.com/notes', - 'facebook.com/notifications.php', - 'facebook.com/notifications', - 'facebook.com/nt', - 'facebook.com/page', - 'facebook.com/pages', - 'facebook.com/people', - 'facebook.com/permalink.php', - 'facebook.com/pg', - 'facebook.com/photo.php', - 'facebook.com/policies', - 'facebook.com/privacy', - 'facebook.com/profile.php', - 'facebook.com/rapid_report', - 'facebook.com/reactions', - 'facebook.com/salegroups', - 'facebook.com/search', - 'facebook.com/settings', - 'facebook.com/shares', - 'facebook.com/story.php', - 'facebook.com/ufi', - 'reddit.com/r/all', - 'reddit.com/r/popular', - 'twitter.com/hashtag', - 'twitter.com/i', - 'twitter.com/search', - 'twitter.com/settings', - 'twitter.com/threadreaderapp', - 'twitter.com/who_to_follow', - 'youtube.com/watch', -].forEach(x => badIdentifiers[x] = true); - browser.contextMenus.onClicked.addListener(function (info, tab) { diff --git a/extension/content.js b/extension/content.js index 30a4d08..66d4cae 100644 --- a/extension/content.js +++ b/extension/content.js @@ -308,7 +308,7 @@ function getIdentifier(urlstr) { try { var k = getIdentifierInternal(urlstr); if (k && k.indexOf('!') != -1) return null; - return k; + return k.toLowerCase(); } catch (e) { console.warn("Unable to get identifier for " + urlstr); return null; @@ -408,10 +408,10 @@ function getIdentifierInternal(urlstr) { if (isHostedOn(host, 'reddit.com')) { var pathname = url.pathname.replace('/u/', '/user/'); if (!pathname.startsWith('/user/') && !pathname.startsWith('/r/')) return null; - return 'reddit.com' + takeFirstPathComponents(pathname, 2).toLowerCase(); + return 'reddit.com' + takeFirstPathComponents(pathname, 2); } if (isHostedOn(host, 'twitter.com')) { - return 'twitter.com' + takeFirstPathComponents(url.pathname, 1).toLowerCase(); + return 'twitter.com' + takeFirstPathComponents(url.pathname, 1); } if (isHostedOn(host, 'youtube.com')) { var pathname = url.pathname; @@ -422,7 +422,7 @@ function getIdentifierInternal(urlstr) { return 'disqus.com' + takeFirstPathComponents(url.pathname, 2); } if (isHostedOn(host, 'medium.com')) { - return 'medium.com' + takeFirstPathComponents(url.pathname, 1).toLowerCase(); + return 'medium.com' + takeFirstPathComponents(url.pathname, 1); } if (isHostedOn(host, 'tumblr.com')) { if (url.pathname.startsWith('/register/follow/')) { @@ -430,7 +430,7 @@ function getIdentifierInternal(urlstr) { return name ? name + '.tumblr.com' : null; } if (host != 'www.tumblr.com' && host != 'assets.tumblr.com' && host.indexOf('.media.') == -1) { - if (!url.pathname.startsWith('/tagged/')) return url.host.toLowerCase(); + if (!url.pathname.startsWith('/tagged/')) return url.host; } return null; } @@ -441,13 +441,13 @@ function getIdentifierInternal(urlstr) { } if (host.indexOf('.blogspot.') != -1) { var m = captureRegex(host, /([a-zA-Z0-9\-]*)\.blogspot/); - if (m) return m.toLowerCase() + '.blogspot.com'; + if (m) return m + '.blogspot.com'; } var id = host; if (id.startsWith('www.')) id = id.substr(4); if (id.startsWith('m.')) id = id.substr(2); - return id.toLowerCase(); + return id; }