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)

graph LR saveFieldRule["saveFieldRule"] collectParamsFromUI["collectParamsFromUI"] hideRulePopup["hideRulePopup"] saveFieldRule -->|calls| collectParamsFromUI saveFieldRule -->|calls| hideRulePopup style saveFieldRule fill:#dbeafe,stroke:#2563eb,stroke-width:2px click saveFieldRule "ce40bf58e0f8ddd4.html" click collectParamsFromUI "37fd92ff99d24fcf.html" click hideRulePopup "aa799488319c1bed.html"
TargetType
collectParamsFromUI calls
hideRulePopup calls

Impact (Incoming)

graph LR saveFieldRule["saveFieldRule"] renderFieldsTab["renderFieldsTab"] setupPopupListeners["setupPopupListeners"] handlePopupKeyDown["handlePopupKeyDown"] renderFieldsTab -->|calls| saveFieldRule setupPopupListeners -->|calls| saveFieldRule handlePopupKeyDown -->|calls| saveFieldRule style saveFieldRule fill:#dbeafe,stroke:#2563eb,stroke-width:2px click saveFieldRule "ce40bf58e0f8ddd4.html" click renderFieldsTab "f02a4b6eabef0223.html" click setupPopupListeners "ca4c2bf69b7d4b11.html" click handlePopupKeyDown "9eb9336b629ec1ed.html"