-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcontent.js
More file actions
125 lines (116 loc) · 3.97 KB
/
content.js
File metadata and controls
125 lines (116 loc) · 3.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
const improvedUrls = {};
const urlsToImprove = [];
function addListener(element, itemUrl) {
urlsToImprove.push(itemUrl);
element.addEventListener("click", async (event) => {
chrome.runtime.sendMessage(
(message = {
type: "ELEMENT_LINK_CLICKED",
new_url: improvedUrls[itemUrl] || itemUrl,
})
);
event.stopPropagation();
});
}
function handleWishList() {
Array.from(
document.querySelectorAll("[class|='editItemWrap'] div[class|='nnEntry']")
)
.filter((e) => e && !e.parentNode.classList.contains("jto-link"))
.forEach((e) => {
productId = e
.closest("[class|='productCardV2--productCard']")
.querySelector("[class|='operator--operator']")
.getAttribute("data-id")
.substring(9);
const jtoAnchor = document.createElement("a");
jtoAnchor.classList = e.classList;
jtoAnchor.innerHTML = e.innerHTML;
jtoAnchor.querySelector("span").innerText =
chrome.i18n.getMessage("linkcta");
jtoAnchor.setAttribute("href", "javascript:void(0)");
e.innerHTML = e.outerHTML;
e.classList = "jto-link";
e.children[0].after(jtoAnchor);
const itemUrl = "https://www.aliexpress.com/item/" + productId + ".html";
addListener(jtoAnchor, itemUrl);
});
}
function handleSearchResults() {
reg = /(.*aliexpress.(?:com|us|ru)).*productIds=([0-9]*).*$/;
Array.from(document.querySelectorAll("[href*=BundleDeals]"))
.map((e) => e.querySelector(".comet-icon")?.parentNode)
.filter((e) => e && !e.classList.contains("jto-link"))
.forEach((e) => {
e.classList.add("jto-link");
currentURL = e.closest("a").href;
match = currentURL.match(reg);
if (!match) {
return;
}
const jtoAnchor = document.createElement("a");
jtoAnchor.classList = e.classList;
jtoAnchor.classList.add("jto-link-added");
jtoAnchor.innerHTML = e.innerHTML;
jtoAnchor.setAttribute("href", "javascript:void(0)");
s = jtoAnchor.querySelector("span");
s.innerText = chrome.i18n.getMessage("linkcta");
e.after(jtoAnchor);
let url = match[1] + "/item/" + match[2] + ".html";
addListener(jtoAnchor, url);
});
}
function handleUrlImprovements() {
if (urlsToImprove.length === 0) {
return;
}
chrome.runtime.sendMessage(
{
type: "IMPROVE_LINK",
productUrls: urlsToImprove,
},
(response) => {
if (response && response.improvedUrls) {
Object.assign(improvedUrls, response.improvedUrls);
}
urlsToImprove.length = 0;
}
);
}
function handleBundleDealsPage() {
Array.from(document.querySelectorAll(".AIC-ATM-container")).forEach((e) => {
if (e.classList.contains("jto-link")) {
return;
}
const cloned = e.cloneNode();
cloned.classList=[];
e.classList.add("jto-link");
const jtoAnchor = document.createElement("a");
jtoAnchor.classList.add("jto-link-added");
jtoAnchor.setAttribute("href", "javascript:void(0)");
jtoAnchor.innerHTML = "<span>" + chrome.i18n.getMessage("linkcta") + "</span><span class=\"comet-icon comet-icon-arrowleftrtl32 P26bZ\"><svg viewBox=\"0 0 1024 1024\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"false\" focusable=\"false\"><path d=\"M373.856 288l224 224-224 224a74.656 74.656 0 0 0 105.6 0l197.6-197.6a37.344 37.344 0 0 0 0-52.8L479.456 288a74.656 74.656 0 0 0-105.6 0z\"></path></svg></span>";
cloned.innerHTML = jtoAnchor.outerHTML;
const productId = e.parentNode.id.split("info_container.")[1];
let itemUrl = "https://www.aliexpress.com/item/" + productId + ".html";
e.after(cloned);
addListener(cloned, itemUrl);
});
}
function onReady() {
if (location.href.includes("/BundleDeals2")) {
chrome.runtime.sendMessage(
(message = {
type: "VISIT_BUNDLE_DEALS_PAGE",
})
);
}
}
function run() {
handleWishList();
handleSearchResults();
handleBundleDealsPage();
handleUrlImprovements();
}
onReady();
run();
setInterval(run, 1000);