pomf-rehost/background.js

129 lines
2.9 KiB
JavaScript

function getCurrentTabUrl(callback) {
var queryInfo = {
active: true,
currentWindow: true
};
chrome.tabs.query(queryInfo, function(tabs) {
var tab = tabs[0];
var url = tab.url;
callback(url);
});
}
function replaceBookmark(oldUrl, newUrl) {
chrome.bookmarks.search({url: oldUrl}, function(bookmarks) {
for(bookmark of bookmarks) {
chrome.bookmarks.update(bookmark.id, {url: newUrl});
}
});
}
function copyToClipboard(url) {
document.oncopy = function(event) {
event.clipboardData.setData("text/plain", url);
event.preventDefault();
};
document.execCommand('Copy', false, null);
}
chrome.pageAction.onClicked.addListener(function(tab) {
getCurrentTabUrl(function(url) {
var betterUrl = getBetterUrl(url);
var filename = betterUrl.substr(betterUrl.lastIndexOf("/"));
filename = removeQueryString(filename);
chrome.storage.sync.get({url: '', tabbehaviour: '', copytoclipboard: false, replacebookmark: false}, function(config) {
if(config.url == '') {
alert("Please select a Pomf clone.");
chrome.tabs.create({ url: "options.html" });
return;
}
var worker = new Worker('worker.js');
worker.onmessage = function(event) {
var response = JSON.parse(event.data);
var newUrl = response.files[0].url;
switch(config.tabbehaviour)
{
case "newtab":
chrome.tabs.create({url: newUrl});
break;
case "replacetab":
chrome.tabs.update(tab.id, {url: newUrl});
break;
}
if(config.copytoclipboard) {
copyToClipboard(newUrl);
}
if(config.replacebookmark) {
replaceBookmark(url, newUrl);
}
worker.terminate();
};
worker.postMessage(JSON.stringify({pomfclone: config.url, url: betterUrl, filename: filename}));
});
});
});
function getBetterUrl(url) {
var extensionIndex = url.lastIndexOf('.');
var extension = url.substr(extensionIndex + 1);
if(extension == "gifv") {
return url.replace("gifv", "mp4");
}
return url;
}
function removeQueryString(url) {
if(url.indexOf('?') != -1) {
return url.substr(0, url.indexOf('?'));
} else {
return url;
}
}
function isCoolUrl(url) {
url = url.toLowerCase();
var extensionIndex = url.lastIndexOf('.');
var extension = removeQueryString(url.substr(extensionIndex + 1));
var validExtensions = ["jpg", "jpeg", "png", "gif", "webm", "gifv", "mp4", "mp3", "ogg", "opus"];
var blackList = ["pomf", "mixtape.moe", "catgirlsare.sexy", "cocaine.ninja"];
for(black of blackList) {
if(url.indexOf(black) != -1) {
return false;
}
}
return validExtensions.indexOf(extension) != -1;
}
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if(isCoolUrl(tab.url) && tab.active)
{
chrome.pageAction.show(tabId);
}
});
chrome.tabs.onActivated.addListener(function(activeInfo) {
chrome.tabs.get(activeInfo.tabId, function(tab) {
if(isCoolUrl(tab.url))
{
chrome.pageAction.show(activeInfo.tabId);
}
});
});