diff --git a/packages/example/src/routes/form.tsx b/packages/example/src/routes/form.tsx index 409afdf..025c509 100644 --- a/packages/example/src/routes/form.tsx +++ b/packages/example/src/routes/form.tsx @@ -24,17 +24,18 @@ const RegisterFormSchema = Schema.Struct({ }) const RegisterFormSubmitSchema = Schema.Struct({ - ...RegisterFormSchema.fields, email: Schema.transformOrFail( - Schema.encodedSchema(RegisterFormSchema.fields.email), - Schema.typeSchema(RegisterFormSchema.fields.email), + Schema.String, + Schema.String, { decode: (input, _options, ast) => input !== "admin@admin.com" ? ParseResult.succeed(input) - : ParseResult.fail(new ParseResult.Refinement(ast, input, "Predicate", "This email is already in use.")), + : ParseResult.fail(new ParseResult.Type(ast, input, "This email is already in use.")), encode: ParseResult.succeed, }, ), + password: Schema.String, + birth: Schema.OptionFromSelf(Schema.DateTimeUtcFromSelf), }) class RegisterForm extends Effect.Service()("RegisterForm", { @@ -55,7 +56,7 @@ class RegisterForm extends Effect.Service()("RegisterForm", { initialEncodedValue: { email: "", password: "", birth: Option.none() }, onSubmit: Effect.fnUntraced(function*(v) { yield* Effect.sleep("500 millis") - return v + return yield* Schema.decode(RegisterFormSubmitSchema)(v) }), debounce: "500 millis", })