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

Function SecretFormProvider

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

Source from the content-addressed store, hash-verified

104}
105
106function SecretFormProvider(props: SecretFormProviderProps) {
107 const {
108 existingSecretIds,
109 suggestedName = "",
110 fallbackId = "credential",
111 initialIdOverride,
112 initialProvider = "auto",
113 owner,
114 integration,
115 template,
116 onCreated,
117 children,
118 } = props;
119
120 const doCreate = useAtomSet(createConnection, { mode: "promiseExit" });
121
122 const [state, setState] = useState<SecretFormState>(() => ({
123 name: suggestedName,
124 value: "",
125 idOverride: initialIdOverride ?? null,
126 provider: initialProvider,
127 revealed: false,
128 status: { kind: "idle" },
129 }));
130
131 const baseName = state.name || suggestedName;
132 const autoId = useMemo(
133 () => getUniqueSecretId(baseName, existingSecretIds, fallbackId),
134 [baseName, existingSecretIds, fallbackId],
135 );
136 const id = state.idOverride ?? autoId;
137 const duplicateError =
138 state.idOverride !== null && isSecretIdTaken(state.idOverride, existingSecretIds)
139 ? "Name already exists"
140 : null;
141
142 const displayName = state.name.trim() || suggestedName.trim();
143 const canSubmit =
144 id.trim() !== "" &&
145 state.value.trim() !== "" &&
146 duplicateError === null &&
147 state.status.kind !== "submitting";
148
149 const submit = async () => {
150 if (!canSubmit) return;
151 setState((s) => ({ ...s, status: { kind: "submitting" } }));
152 const exit = await doCreate({
153 payload: {
154 owner,
155 name: ConnectionName.make(id.trim()),
156 integration,
157 template,
158 identityLabel: displayName || id.trim(),
159 value: state.value.trim(),
160 },
161 reactivityKeys: connectionWriteKeys,
162 });
163 if (Exit.isFailure(exit)) {

Callers

nothing calls this directly

Calls 2

getUniqueSecretIdFunction · 0.90
isSecretIdTakenFunction · 0.90

Tested by

no test coverage detected