importForms function

Last updated: 2026-03-04T23:21:38.431Z

Metrics

LOC: 43 Complexity: 11 Params: 1

Signature

importForms(file: File): : Promise<void>

Architecture violations

View all

  • [warning] max-cyclomatic-complexity: 'importForms' has cyclomatic complexity 11 (max 10)

Source Code

async function importForms(file: File): Promise<void> {
  let parsed: unknown;
  try {
    parsed = JSON.parse(await file.text());
  } catch {
    showToast(t("errorInvalidJson"));
    return;
  }

  if (
    typeof parsed !== "object" ||
    parsed === null ||
    !Array.isArray((parsed as Record<string, unknown>).forms)
  ) {
    showToast(t("errorInvalidFormat"));
    return;
  }

  const forms = (parsed as { forms: unknown[] }).forms;
  let count = 0;

  for (const form of forms) {
    if (
      typeof form !== "object" ||
      form === null ||
      typeof (form as Record<string, unknown>).id !== "string" ||
      typeof (form as Record<string, unknown>).name !== "string"
    ) {
      continue;
    }

    await chrome.runtime.sendMessage({
      type: "UPDATE_FORM",
      payload: form,
    });
    count++;
  }

  await loadSavedForms();
  showToast(
    count > 0 ? t("toastFormsImported", [String(count)]) : t("noFormsInFile"),
  );
}

Dependencies (Outgoing)

graph LR importForms["importForms"] loadSavedForms["loadSavedForms"] importForms -->|calls| loadSavedForms style importForms fill:#dbeafe,stroke:#2563eb,stroke-width:2px click importForms "8f033b80a44a7e60.html" click loadSavedForms "cf1ee6d5c3ab3b9b.html"
TargetType
loadSavedForms calls

Impact (Incoming)

graph LR importForms["importForms"] initFormsTab["initFormsTab"] initFormsTab -->|calls| importForms style importForms fill:#dbeafe,stroke:#2563eb,stroke-width:2px click importForms "8f033b80a44a7e60.html" click initFormsTab "016a6b967c8f6192.html"
SourceType
initFormsTab calls