saveFieldRule function
Last updated: 2026-03-04T23:21:38.396Z
Metrics
LOC: 38
Complexity: 10
Params: 0
Signature
saveFieldRule(): : Promise<void>
Source Code
async function saveFieldRule(): Promise<void> {
if (!currentRuleField) return;
const fixedInput =
rulePopupElement?.querySelector<HTMLInputElement>("#fa-rp-fixed");
const genSelect =
rulePopupElement?.querySelector<HTMLSelectElement>("#fa-rp-generator");
const fixedValue = fixedInput?.value.trim() || undefined;
const generator = (genSearchableSelect?.getValue() ||
"auto") as FieldRule["generator"];
const rule: FieldRule = {
id: `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,
urlPattern: `${window.location.origin}${window.location.pathname}*`,
fieldSelector: currentRuleField.selector,
fieldName: currentRuleField.name || currentRuleField.id || undefined,
fieldType: currentSuggestedType ?? "unknown",
fixedValue,
generator: fixedValue ? "auto" : generator,
generatorParams: fixedValue ? undefined : collectParamsFromUI(),
priority: 10,
createdAt: Date.now(),
updatedAt: Date.now(),
};
await chrome.runtime.sendMessage({ type: "SAVE_RULE", payload: rule });
const saveBtn =
rulePopupElement?.querySelector<HTMLButtonElement>("#fa-rp-save");
if (saveBtn) {
saveBtn.textContent = "✓ Salvo!";
saveBtn.disabled = true;
setTimeout(() => {
hideRulePopup();
currentOnDismiss?.();
}, 800);
}
}
Dependencies (Outgoing)
| Target | Type |
|---|---|
| collectParamsFromUI | calls |
| hideRulePopup | calls |
Impact (Incoming)
| Source | Type |
|---|---|
| renderFieldsTab | calls |
| setupPopupListeners | calls |
| handlePopupKeyDown | calls |