applications-tracker/extensions/definitions.js

170 lines
5.5 KiB
JavaScript

function getPageData() {
// Parse things for linkedin
if (window.location.host.includes("linkedin")) {
if (window.location.host.includes("merchantpool1")) {
return;
}
const jobTitle = document.querySelector("h1").textContent;
const company = document.querySelector(
'.relative a[target="_self"]',
).textContent;
const money =
document
.querySelector('ul li div div div li-icon[type="job"]')
?.parentNode?.parentNode?.parentNode?.parentNode?.children[1]?.children[0]?.textContent?.replaceAll(
/\s{2,}/g,
"",
) ??
Object.values(
document.querySelector(
'button[class="job-details-preferences-and-skills"]',
)?.children ?? [],
).find(
(a) => a.innerText.match(/\d/) && !a.innerText.match("skill"),
)?.innerText ??
"";
const inperson_type =
(Object.values(
document.querySelector(
'button[class="job-details-preferences-and-skills"]',
)?.children,
)
.find((a) => a.innerText.match(/hybrid|remote|on-site/i))
?.innerText?.split("\n") ?? [])[0]?.trim() ?? "";
const location =
document.querySelector(
'div[class^="job-details-jobs-unified-top-card__primary-description-container"]',
)?.children[0]?.children[0]?.innerText ?? "";
const description = document.querySelector("article").textContent;
let status = undefined;
const maybeStatus = document.querySelector(
".artdeco-inline-feedback__message",
)?.innerText;
if (maybeStatus === "No longer accepting applications") {
status = "expired";
}
browser.runtime.sendMessage({
type: "GOT_INFO_R",
company,
jobTitle,
money,
description,
location,
inperson_type,
status,
});
return;
}
// Ignore everything that is no glassdoor
if (!window.location.host.includes("glassdoor")) return;
const company = document
.querySelector('header[data-test="job-details-header"]')
.children[0].children[0].querySelector("h4").innerHTML;
const jobTitle = document
.querySelector('header[data-test="job-details-header"]')
.querySelector("h1").innerHTML;
const description = [
...document
.querySelector('header[data-test="job-details-header"]')
.parentNode.querySelectorAll("button"),
].filter((a) => a.textContent == "Show more")[0]?.parentNode?.parentNode
?.textContent;
let money =
document.querySelectorAll(
'div[class^="SalaryEstimate_salaryRange"]',
)?.[0]?.innerText ?? "";
const location =
document.querySelector('div[data-test="location"]')?.innerText ?? "";
const moneySectionNode = document.querySelector("section>section");
if (
moneySectionNode &&
["Base pay range", "Base pay"].includes(
moneySectionNode.querySelector("h2")?.textContent,
)
) {
money =
moneySectionNode.querySelector("div>div>div").children[1]
?.textContent ?? "";
}
let status = undefined;
if (!!document.querySelector("#expired-job-notice_Heading")) {
status = "expired";
}
browser.runtime.sendMessage({
type: "GOT_INFO_R",
company,
jobTitle,
money,
description,
location,
inperson_type: "",
status,
});
}
browser.runtime.onMessage.addListener((message) => {
if (message.type === "GET_DATA_FROM_PAGE") {
getPageData();
} else if (message.type === "CHANGE_PAGE") {
window.location.href = message.new_url;
} else if (
message.type === "MY_GET_URL_R" ||
message.type === "GOT_INFO_R" ||
message.type === "GOT_INTEREST" ||
message.type === "AUTOLOAD_FOUND_GLASSDOOR_SEARCH"
) {
window.postMessage(message);
} else if (message.type === "AUTOLOAD_FINISHED") {
if (
window.location.href.includes("glassdoor") &&
document.querySelector('a[data-test="for-you-page-link"]')
) {
browser.runtime.sendMessage({
type: "AUTOLOAD_FOUND_GLASSDOOR_SEARCH",
});
return;
}
if (
!window.location.href.includes("glassdoor") &&
!window.location.href.includes("linkedin")
)
return;
browser.runtime.sendMessage({
type: "AUTOLOAD_NOTIFY_URL",
url: window.location.href,
});
setTimeout(getPageData, 1000);
}
});
window.addEventListener("message", (e) => {
if (e.data.type === "MY_GET_URL") {
browser.runtime.sendMessage({ type: "MY_GET_URL" });
} else if (e.data.type === "HAS_EXTENSION_Q") {
window.postMessage({ type: "HAS_EXTENSION" });
} else if (e.data.type === "REGISTER_INTEREST") {
browser.runtime.sendMessage({ type: "REGISTER_INTEREST" });
} else if (e.data.type === "R_GET_DATA_FROM_PAGE") {
browser.runtime.sendMessage({ type: "R_GET_DATA_FROM_PAGE" });
} else if (e.data.type === "CHANGE_PAGE") {
browser.runtime.sendMessage({
type: "CHANGE_PAGE",
new_url: e.data.new_url,
});
}
});