Format with prettier. Use screen mode for invitation import - dialog mode is broken.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { useState, useCallback } from 'react';
|
||||
import type { XOTemplate } from '@xo-cash/types';
|
||||
import type { VariableInput } from '../types.js';
|
||||
import { useState, useCallback } from "react";
|
||||
import type { XOTemplate } from "@xo-cash/types";
|
||||
import type { VariableInput } from "../types.js";
|
||||
|
||||
/**
|
||||
* Manages the variable input state for the wizard's variables step.
|
||||
@@ -15,27 +15,30 @@ export function useVariableInputs() {
|
||||
* Populate the variable list from the template's role requirements.
|
||||
* Calling this again replaces the current variables entirely.
|
||||
*/
|
||||
const initFromTemplate = useCallback((
|
||||
template: XOTemplate,
|
||||
actionIdentifier: string,
|
||||
roleIdentifier: string,
|
||||
) => {
|
||||
const action = template.actions?.[actionIdentifier];
|
||||
const role = action?.roles?.[roleIdentifier];
|
||||
const varIds = role?.requirements?.variables ?? [];
|
||||
const initFromTemplate = useCallback(
|
||||
(
|
||||
template: XOTemplate,
|
||||
actionIdentifier: string,
|
||||
roleIdentifier: string,
|
||||
) => {
|
||||
const action = template.actions?.[actionIdentifier];
|
||||
const role = action?.roles?.[roleIdentifier];
|
||||
const varIds = role?.requirements?.variables ?? [];
|
||||
|
||||
const varInputs: VariableInput[] = varIds.map((varId) => {
|
||||
const varDef = template.variables?.[varId];
|
||||
return {
|
||||
id: varId,
|
||||
name: varDef?.name || varId,
|
||||
type: varDef?.type || 'string',
|
||||
hint: varDef?.hint,
|
||||
value: '',
|
||||
};
|
||||
});
|
||||
setVariables(varInputs);
|
||||
}, []);
|
||||
const varInputs: VariableInput[] = varIds.map((varId) => {
|
||||
const varDef = template.variables?.[varId];
|
||||
return {
|
||||
id: varId,
|
||||
name: varDef?.name || varId,
|
||||
type: varDef?.type || "string",
|
||||
hint: varDef?.hint,
|
||||
value: "",
|
||||
};
|
||||
});
|
||||
setVariables(varInputs);
|
||||
},
|
||||
[],
|
||||
);
|
||||
|
||||
/** Update a single variable's value by index. */
|
||||
const updateVariable = useCallback((index: number, value: string) => {
|
||||
@@ -51,9 +54,11 @@ export function useVariableInputs() {
|
||||
|
||||
/** Returns an error message if any required variable is empty, or null if valid. */
|
||||
const validate = useCallback((): string | null => {
|
||||
const emptyVars = variables.filter((v) => !v.value || v.value.trim() === '');
|
||||
const emptyVars = variables.filter(
|
||||
(v) => !v.value || v.value.trim() === "",
|
||||
);
|
||||
if (emptyVars.length > 0) {
|
||||
return `Please enter values for: ${emptyVars.map((v) => v.name).join(', ')}`;
|
||||
return `Please enter values for: ${emptyVars.map((v) => v.name).join(", ")}`;
|
||||
}
|
||||
return null;
|
||||
}, [variables]);
|
||||
|
||||
Reference in New Issue
Block a user