70 lines
2.0 KiB
JavaScript
70 lines
2.0 KiB
JavaScript
const NATIVE_HOST = "com.downloadmanager.bridge";
|
||
|
||
const interceptExtensions = [
|
||
"exe","msi","zip","rar","7z","tar","gz","iso",
|
||
"mp4","mkv","avi","mp3","flac","wav",
|
||
"pdf","docx","xlsx","pptx"
|
||
];
|
||
|
||
chrome.runtime.onInstalled.addListener(() => {
|
||
chrome.contextMenus.create({
|
||
id: "dm-download-link",
|
||
title: "hDM ile indir",
|
||
contexts: ["link"]
|
||
});
|
||
|
||
chrome.contextMenus.create({
|
||
id: "dm-grab-page",
|
||
title: "Siteyi hDM ile incele",
|
||
contexts: ["page", "link"]
|
||
});
|
||
});
|
||
|
||
chrome.downloads.onCreated.addListener((item) => {
|
||
const ext = item.filename?.split(".").pop()?.toLowerCase() ?? "";
|
||
if (!interceptExtensions.includes(ext)) return;
|
||
|
||
chrome.downloads.cancel(item.id, () => {
|
||
console.log("İndirme yakalandı, bridge'e gönderiliyor:", item.url);
|
||
chrome.runtime.sendNativeMessage(NATIVE_HOST, {
|
||
action: "add_download",
|
||
url: item.url,
|
||
filename: item.filename,
|
||
referrer: item.referrer ?? ""
|
||
}, (response) => {
|
||
if (chrome.runtime.lastError) {
|
||
console.error("Bridge Hatası:", chrome.runtime.lastError.message);
|
||
} else {
|
||
console.log("Bridge Yanıtı:", response);
|
||
}
|
||
});
|
||
});
|
||
});
|
||
|
||
chrome.contextMenus.onClicked.addListener((info, tab) => {
|
||
if (info.menuItemId === "dm-download-link") {
|
||
chrome.runtime.sendNativeMessage(NATIVE_HOST, {
|
||
action: "add_download",
|
||
url: info.linkUrl
|
||
}, (response) => {
|
||
if (chrome.runtime.lastError) {
|
||
console.error("Bridge Hatası:", chrome.runtime.lastError.message);
|
||
} else {
|
||
console.log("Bridge Yanıtı:", response);
|
||
}
|
||
});
|
||
} else if (info.menuItemId === "dm-grab-page") {
|
||
const url = info.linkUrl || info.pageUrl;
|
||
chrome.runtime.sendNativeMessage(NATIVE_HOST, {
|
||
action: "open_grabber",
|
||
url: url
|
||
}, (response) => {
|
||
if (chrome.runtime.lastError) {
|
||
console.error("Bridge Hatası:", chrome.runtime.lastError.message);
|
||
} else {
|
||
console.log("Bridge Yanıtı:", response);
|
||
}
|
||
});
|
||
}
|
||
});
|