MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / SecretFormProvider

Function SecretFormProvider

packages/react/src/plugins/secret-form.tsx:122–206  ·  view source on GitHub ↗
(props: SecretFormProviderProps)

Source from the content-addressed store, hash-verified

120}
121
122function SecretFormProvider(props: SecretFormProviderProps) {
123 const {
124 existingSecretIds,
125 suggestedName = "",
126 fallbackId = "credential",
127 initialIdOverride,
128 initialProvider = "auto",
129 owner,
130 integration,
131 template,
132 onCreated,
133 children,
134 } = props;
135
136 const doCreate = useAtomSet(createConnection, { mode: "promiseExit" });
137
138 const [state, setState] = useState<SecretFormState>(() => ({
139 name: suggestedName,
140 value: "",
141 idOverride: initialIdOverride ?? null,
142 provider: initialProvider,
143 revealed: false,
144 status: { kind: "idle" },
145 }));
146
147 const baseName = state.name || suggestedName;
148 const autoId = useMemo(
149 () => getUniqueSecretId(baseName, existingSecretIds, fallbackId),
150 [baseName, existingSecretIds, fallbackId],
151 );
152 const id = state.idOverride ?? autoId;
153 const duplicateError =
154 state.idOverride !== null && isSecretIdTaken(state.idOverride, existingSecretIds)
155 ? "Name already exists"
156 : null;
157
158 const displayName = state.name.trim() || suggestedName.trim();
159 const canSubmit =
160 id.trim() !== "" &&
161 state.value.trim() !== "" &&
162 duplicateError === null &&
163 state.status.kind !== "submitting";
164
165 const submit = async () => {
166 if (!canSubmit) return;
167 setState((s) => ({ ...s, status: { kind: "submitting" } }));
168 const exit = await doCreate({
169 payload: {
170 owner,
171 name: ConnectionName.make(id.trim()),
172 integration,
173 template,
174 identityLabel: displayName || id.trim(),
175 value: state.value.trim(),
176 },
177 reactivityKeys: connectionWriteKeys,
178 });
179 if (Exit.isFailure(exit)) {

Callers

nothing calls this directly

Calls 2

getUniqueSecretIdFunction · 0.90
isSecretIdTakenFunction · 0.90

Tested by

no test coverage detected