;
isFirstVariable?: boolean;
}
const EditEnvironmentVariableRow = ({
variable,
onUpdate,
isFirstVariable = false,
}: EditEnvironmentVariableRowProps) => {
const client = useGQLClient();
const { toast, dismiss } = useToast();
const { handleSubmit, register, reset } = useForm({
defaultValues: {
key: variable.key,
value: variable.value,
},
});
const [showPassword, setShowPassword] = useState(false);
const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
const [edit, setEdit] = useState(false);
const removeEnvironmentVariableHandler = useCallback(async () => {
const { removeEnvironmentVariable: isEnvironmentVariableRemoved } =
await client.removeEnvironmentVariable(variable.id);
if (isEnvironmentVariableRemoved) {
await onUpdate();
setDeleteDialogOpen((preVal) => !preVal);
toast({
id: 'variable_deleted',
title: 'Variable deleted',
variant: 'success',
onDismiss: dismiss,
});
} else {
toast({
id: 'variable_not_deleted',
title: 'Variable not deleted',
variant: 'error',
onDismiss: dismiss,
});
}
}, [variable, onUpdate]);
const updateEnvironmentVariableHandler = useCallback(
async (data: { key: string; value: string }) => {
const { updateEnvironmentVariable: isEnvironmentVariableUpdated } =
await client.updateEnvironmentVariable(variable.id, data);
if (isEnvironmentVariableUpdated) {
await onUpdate();
toast({
id: 'variable_updated',
title: 'Variable edited',
variant: 'success',
onDismiss: dismiss,
});
setEdit((preVal) => !preVal);
} else {
toast({
id: 'variable_not_updated',
title: 'Variable not edited',
variant: 'error',
onDismiss: dismiss,
});
}
},
[variable, onUpdate],
);
useEffect(() => {
reset({ key: variable.key, value: variable.value });
}, [variable]);
return (
<>
{
setShowPassword((prevShowPassword) => !prevShowPassword);
}}
isVisible={showPassword || edit}
/>
}
{...register(`value`)}
/>
setDeleteDialogOpen((preVal) => !preVal)}
open={deleteDialogOpen}
handleConfirm={removeEnvironmentVariableHandler}
variableKey={variable.key}
/>
>
);
};
export default EditEnvironmentVariableRow;