Untitled
unknown
plain_text
5 months ago
5.1 kB
3
Indexable
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { if (message.action === "autofill") { console.log("Autofill message received."); chrome.storage.sync.get("userData", ({ userData }) => { if (!userData) { 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("Checking field:", name || placeholder); for (const [key, keywords] of Object.entries(fieldMappings)) { if ( keywords.some((keyword) => name?.includes(keyword) || placeholder?.includes(keyword) ) ) { console.log(`Filling ${key} with ${userData[key]}`); input.value = userData[key] || ""; input.dispatchEvent(new Event("input", { bubbles: true })); filledFields++; break; } } }); 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"], phone: ["phone", "phone number", "contact"], position: ["applied position", "job title", "position"], startDate: ["start date", "earliest start date", "available date"], experience: ["experience", "work experience"], skills: ["skills", "key skills"], education: ["education", "degree", "academic background"], languages: ["languages", "spoken languages"], certificateLink: ["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; } } }); 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