Untitled
unknown
plain_text
a year ago
5.7 kB
5
Indexable
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.action === "autofill") {
console.log("Autofill message received.");
chrome.storage.sync.get("userData", ({ userData }) => {
var activeProfile = chrome.storage.sync.get("customProfile", ({ customProfile }) => {
var userDataAll = userData[customProfile['activeprofile']];
if (!userDataAll) {
console.error("No user data found.");
sendResponse({ status: "error", message: "No user data found." });
return;
}
console.log("User data:", userData);
const fieldMappings = {
firstName: ["first name", "fname", "first"],
lastName: ["last name", "lname", "last"],
email: ["email", "email address", "e-mail"],
phone: ["phone", "phone number", "contact"],
position: ["applied position", "job title", "position"],
startDate: ["start date", "earliest start date", "available date"],
};
const inputs = document.querySelectorAll("input, textarea");
let filledFields = 0;
inputs.forEach((input) => {
const name = input.name?.toLowerCase() || input.id?.toLowerCase();
const placeholder = input.placeholder?.toLowerCase();
console.log(userData);
for (const [key, value] of Object.entries(userDataAll)) {
if (typeof fieldMappings[key.toLowerCase()] !== "undefined") {
var keywords = fieldMappings[key.toLowerCase()];
if (keywords.some((keyword) => name?.includes(keyword) || placeholder?.includes(keyword))) {
console.log(`Filling ${key} with ${userDataAll[key]}`);
input.value = userDataAll[key] || "";
input.dispatchEvent(new Event("input", { bubbles: true }));
filledFields++;
}
} else {
console.log(key.toLowerCase());
if (name.indexOf(key.toLowerCase()) != -1 || placeholder.indexOf(key.toLowerCase()) != -1) {
console.log(`Filling ${key} with ${userDataAll[key]}`);
input.value = userDataAll[key] || "";
input.dispatchEvent(new Event("input", { bubbles: true }));
filledFields++;
}
}
}
});
if (filledFields > 0) {
console.log(`Successfully filled ${filledFields} fields.`);
sendResponse({ status: "success" });
} else {
console.error("No fields matched for autofill.");
sendResponse({ status: "error", message: "No fields matched." });
}
});
});
return true;
}
});
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.action === "getFormData") {
const formData = {};
const inputs = document.querySelectorAll("input, textarea");
inputs.forEach((input) => {
const name = input.name || input.id || input.placeholder;
if (name) {
formData[name] = input.value;
}
});
sendResponse({ formData });
return true;
}
if (message.action === "restoreFormData") {
const { formData } = message;
const inputs = document.querySelectorAll("input, textarea");
inputs.forEach((input) => {
const name = input.name || input.id || input.placeholder;
if (formData[name] !== undefined) {
input.value = formData[name];
input.dispatchEvent(new Event("input", { bubbles: true }));
}
});
sendResponse({ status: "success" });
return true;
}
});
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.action === "autofillProfile") {
const { profileData } = message;
if (!profileData) {
console.error("No profile data received.");
sendResponse({ status: "error", message: "No profile data received." });
return true;
}
console.log("Received Profile Data:", profileData);
const fieldMappings = {
firstName: ["first name", "fname", "first"],
lastName: ["last name", "lname", "last"],
email: ["email", "email address", "e-mail"],
experience: ["experience", "work experience"],
skills: ["skills", "key skills"],
education: ["education", "degree", "academic background"],
languages: ["languages", "spoken languages"],
certificateLinks: ["certificate link", "certificates"],
portfolioLinks: ["portfolio links", "portfolio"],
personalSummary: ["summary", "personal summary", "about me"],
};
const inputs = document.querySelectorAll("input, textarea");
let filledFields = 0;
inputs.forEach((input) => {
const name = input.name?.toLowerCase() || input.id?.toLowerCase();
const placeholder = input.placeholder?.toLowerCase();
for (const [key, keywords] of Object.entries(fieldMappings)) {
if (keywords.some( (keyword) => name?.includes(keyword) || placeholder?.includes(keyword))) {
console.log(`Filling ${key} with ${profileData[key]}`);
input.value = profileData[key] || "";
input.dispatchEvent(new Event("input", { bubbles: true }));
filledFields++;
break;
}
}
console.log(key + "++++");
});
if (filledFields > 0) {
console.log(`Successfully filled ${filledFields} fields.`);
sendResponse({ status: "success", filledFields });
} else {
console.error("No fields matched for autofill.");
sendResponse({ status: "error", message: "No fields matched." });
}
return true;
}
});Editor is loading...
Leave a Comment