53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
document.addEventListener("DOMContentLoaded", (event) => {
|
|
let pageHref: string = null;
|
|
let filledThisHref = false;
|
|
let delayFillTimeout: number;
|
|
|
|
const activeUserIdKey = "activeUserId";
|
|
let activeUserId: string;
|
|
|
|
chrome.storage.local.get(activeUserIdKey, (obj: any) => {
|
|
if (obj == null || obj[activeUserIdKey] == null) {
|
|
return;
|
|
}
|
|
activeUserId = obj[activeUserIdKey];
|
|
});
|
|
|
|
chrome.storage.local.get(activeUserId, (obj: any) => {
|
|
if (obj?.[activeUserId]?.settings?.enableAutoFillOnPageLoad === true) {
|
|
setInterval(() => doFillIfNeeded(), 500);
|
|
}
|
|
});
|
|
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
|
|
if (msg.command === "fillForm" && pageHref === msg.url) {
|
|
filledThisHref = true;
|
|
}
|
|
});
|
|
|
|
function doFillIfNeeded(force = false) {
|
|
if (force || pageHref !== window.location.href) {
|
|
if (!force) {
|
|
// Some websites are slow and rendering all page content. Try to fill again later
|
|
// if we haven't already.
|
|
filledThisHref = false;
|
|
if (delayFillTimeout != null) {
|
|
window.clearTimeout(delayFillTimeout);
|
|
}
|
|
delayFillTimeout = window.setTimeout(() => {
|
|
if (!filledThisHref) {
|
|
doFillIfNeeded(true);
|
|
}
|
|
}, 1500);
|
|
}
|
|
|
|
pageHref = window.location.href;
|
|
const msg: any = {
|
|
command: "bgCollectPageDetails",
|
|
sender: "autofiller",
|
|
};
|
|
|
|
chrome.runtime.sendMessage(msg);
|
|
}
|
|
}
|
|
});
|