Skip to content

Commit dce8c6c

Browse files
committed
fix: pass passwordComplexity as an arg
1 parent 4ce9b00 commit dce8c6c

5 files changed

Lines changed: 25 additions & 26 deletions

File tree

core/app/[locale]/(default)/(auth)/register/_actions/register-customer.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@ import { parseWithZod } from '@conform-to/zod';
66
import { getLocale, getTranslations } from 'next-intl/server';
77
import { z } from 'zod';
88

9-
import { Field, FieldGroup, schema } from '@/vibes/soul/form/dynamic-form/schema';
9+
import {
10+
Field,
11+
FieldGroup,
12+
PasswordComplexitySettings,
13+
schema,
14+
} from '@/vibes/soul/form/dynamic-form/schema';
1015
import { signIn } from '~/auth';
1116
import { client } from '~/client';
1217
import { graphql, VariablesOf } from '~/client/graphql';
@@ -335,10 +340,12 @@ function parseRegisterCustomerInput(
335340
}
336341

337342
export async function registerCustomer<F extends Field>(
338-
fields: Array<F | FieldGroup<F>>,
339-
prevState: {
343+
{
344+
fields,
345+
passwordComplexity,
346+
}: { fields: Array<F | FieldGroup<F>>; passwordComplexity?: PasswordComplexitySettings | null },
347+
_prevState: {
340348
lastResult: SubmissionResult | null;
341-
passwordComplexity?: Parameters<typeof schema>[1];
342349
},
343350
formData: FormData,
344351
) {
@@ -347,13 +354,12 @@ export async function registerCustomer<F extends Field>(
347354
const cartId = await getCartId();
348355

349356
const submission = parseWithZod(formData, {
350-
schema: schema(fields, prevState.passwordComplexity),
357+
schema: schema(fields, passwordComplexity),
351358
});
352359

353360
if (submission.status !== 'success') {
354361
return {
355362
lastResult: submission.reply(),
356-
passwordComplexity: prevState.passwordComplexity,
357363
};
358364
}
359365

@@ -374,7 +380,6 @@ export async function registerCustomer<F extends Field>(
374380
lastResult: submission.reply({
375381
formErrors: response.data.customer.registerCustomer.errors.map((error) => error.message),
376382
}),
377-
passwordComplexity: prevState.passwordComplexity,
378383
};
379384
}
380385

@@ -395,20 +400,17 @@ export async function registerCustomer<F extends Field>(
395400
lastResult: submission.reply({
396401
formErrors: error.errors.map(({ message }) => message),
397402
}),
398-
passwordComplexity: prevState.passwordComplexity,
399403
};
400404
}
401405

402406
if (error instanceof Error) {
403407
return {
404408
lastResult: submission.reply({ formErrors: [error.message] }),
405-
passwordComplexity: prevState.passwordComplexity,
406409
};
407410
}
408411

409412
return {
410413
lastResult: submission.reply({ formErrors: [t('somethingWentWrong')] }),
411-
passwordComplexity: prevState.passwordComplexity,
412414
};
413415
}
414416

core/app/[locale]/(default)/gift-certificates/purchase/_actions/add-to-cart.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import { getFormatter, getTranslations } from 'next-intl/server';
77
import { ReactNode } from 'react';
88
import { z } from 'zod';
99

10-
import { Field, FieldGroup } from '@/vibes/soul/form/dynamic-form/schema';
1110
import { client } from '~/client';
1211
import { graphql, ResultOf } from '~/client/graphql';
1312
import { ExistingResultType } from '~/client/util';
@@ -100,7 +99,7 @@ const schema = (
10099
};
101100

102101
export async function addGiftCertificateToCart(
103-
_fields: Array<Field | FieldGroup<Field>>,
102+
_args: unknown,
104103
_prevState: State,
105104
formData: FormData,
106105
): Promise<State> {

core/app/[locale]/(default)/webpages/[id]/contact/_actions/submit-contact-form.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ function parseContactFormInput(
5858
}
5959

6060
export async function submitContactForm<F extends Field>(
61-
fields: Array<F | FieldGroup<F>>,
61+
{ fields }: { fields: Array<F | FieldGroup<F>> },
6262
_prevState: { lastResult: SubmissionResult | null },
6363
formData: FormData,
6464
) {

core/vibes/soul/form/dynamic-form/index.tsx

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,17 @@ import { Field, FieldGroup, PasswordComplexitySettings, schema } from './schema'
4040
import { removeOptionsFromFields } from './utils';
4141

4242
type Action<F extends Field, S, P> = (
43-
fields: Array<F | FieldGroup<F>>,
43+
{
44+
fields,
45+
passwordComplexity,
46+
}: { fields: Array<F | FieldGroup<F>>; passwordComplexity?: PasswordComplexitySettings | null },
4447
state: Awaited<S>,
4548
payload: P,
4649
) => S | Promise<S>;
4750

4851
interface State {
4952
lastResult: SubmissionResult | null;
5053
successMessage?: ReactNode;
51-
passwordComplexity?: PasswordComplexitySettings | null;
5254
}
5355

5456
export type DynamicFormAction<F extends Field> = Action<F, State, FormData>;
@@ -78,21 +80,17 @@ export function DynamicForm<F extends Field>({
7880
onCancel,
7981
onChange,
8082
onSuccess,
81-
passwordComplexity: defaultPasswordComplexity,
83+
passwordComplexity,
8284
}: DynamicFormProps<F>) {
8385
// Remove options from fields before passing to action to reduce payload size
8486
// Options are only needed for rendering, not for processing form submissions
8587
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
8688
const fieldsWithoutOptions = removeOptionsFromFields(fields) as Array<F | FieldGroup<F>>;
87-
const actionWithFields = action.bind(null, fieldsWithoutOptions);
89+
const actionWithFields = action.bind(null, { fields: fieldsWithoutOptions, passwordComplexity });
8890

89-
const [{ lastResult, successMessage, passwordComplexity }, formAction] = useActionState(
90-
actionWithFields,
91-
{
92-
lastResult: null,
93-
passwordComplexity: defaultPasswordComplexity,
94-
},
95-
);
91+
const [{ lastResult, successMessage }, formAction] = useActionState(actionWithFields, {
92+
lastResult: null,
93+
});
9694

9795
const dynamicSchema = schema(fields, passwordComplexity);
9896
const defaultValue = fields

core/vibes/soul/sections/address-list-section/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ export function AddressListSection<A extends Address, F extends Field>({
180180
<div className="border-b border-[var(--address-list-section-border,hsl(var(--contrast-100)))] pb-6 pt-5">
181181
<div className="w-[480px] space-y-4">
182182
<DynamicForm
183-
action={(_fields, _prevState, formData) => {
183+
action={(_args, _prevState, formData) => {
184184
setShowNewAddressForm(false);
185185

186186
startTransition(() => {
@@ -239,7 +239,7 @@ export function AddressListSection<A extends Address, F extends Field>({
239239
{activeAddressIds.includes(address.id) ? (
240240
<div className="w-[480px] space-y-4">
241241
<DynamicForm
242-
action={(_fields, _prevState, formData) => {
242+
action={(_args, _prevState, formData) => {
243243
setActiveAddressIds((prev) => prev.filter((id) => id !== address.id));
244244

245245
startTransition(() => {

0 commit comments

Comments
 (0)