Files
yaak/src-web/lib/editEnvironment.tsx
Gregory Schier b4a1c418bb Run oxfmt across repo, add format script and docs
Add .oxfmtignore to skip generated bindings and wasm-pack output.
Add npm format script, update DEVELOPMENT.md for Vite+ toolchain,
and format all non-generated files with oxfmt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 10:15:49 -07:00

63 lines
2.2 KiB
TypeScript

import type { Environment, EnvironmentVariable } from "@yaakapp-internal/models";
import { updateModel } from "@yaakapp-internal/models";
import { openFolderSettings } from "../commands/openFolderSettings";
import type { PairEditorHandle } from "../components/core/PairEditor";
import { ensurePairId } from "../components/core/PairEditor.util";
import { EnvironmentEditDialog } from "../components/EnvironmentEditDialog";
import { environmentsBreakdownAtom } from "../hooks/useEnvironmentsBreakdown";
import { toggleDialog } from "./dialog";
import { jotaiStore } from "./jotai";
interface Options {
addOrFocusVariable?: EnvironmentVariable;
}
export async function editEnvironment(
initialEnvironment: Environment | null,
options: Options = {},
) {
if (initialEnvironment?.parentModel === "folder" && initialEnvironment.parentId != null) {
openFolderSettings(initialEnvironment.parentId, "variables");
} else {
const { addOrFocusVariable } = options;
const { baseEnvironment } = jotaiStore.get(environmentsBreakdownAtom);
let environment = initialEnvironment ?? baseEnvironment;
let focusId: string | null = null;
if (addOrFocusVariable && environment != null) {
const existing = environment.variables.find(
(v) => v.id === addOrFocusVariable.id || v.name === addOrFocusVariable.name,
);
if (existing) {
focusId = existing.id ?? null;
} else {
const newVar = ensurePairId(addOrFocusVariable);
environment = { ...environment, variables: [...environment.variables, newVar] };
await updateModel(environment);
environment.variables.push(newVar);
focusId = newVar.id;
}
}
let didFocusVariable = false;
toggleDialog({
id: "environment-editor",
noPadding: true,
size: "lg",
className: "h-[90vh] max-h-[60rem]",
render: () => (
<EnvironmentEditDialog
initialEnvironmentId={environment?.id ?? null}
setRef={(pairEditor: PairEditorHandle | null) => {
if (focusId && !didFocusVariable) {
pairEditor?.focusValue(focusId);
didFocusVariable = true;
}
}}
/>
),
});
}
}