Skip to content

Commit 2e16cac

Browse files
author
foxhound87
committed
refactor: refacotr validationAsyncData
1 parent 74d3117 commit 2e16cac

8 files changed

Lines changed: 24 additions & 22 deletions

File tree

src/Field.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ export default class Field extends Base implements FieldInterface {
166166

167167
validationErrorStack: string[] = [];
168168
validationFunctionsData: any[] = [];
169-
validationAsyncData: any;
169+
validationAsyncData = { valid: true, message: null };
170170
debouncedValidation: any;
171171

172172
disposeValidationOnBlur: any;
@@ -288,8 +288,7 @@ export default class Field extends Base implements FieldInterface {
288288

289289
get checkValidationErrors(): boolean {
290290
return (
291-
((this.validationAsyncData as any)?.valid === false &&
292-
!_.isEmpty(this.validationAsyncData)) ||
291+
!this.validationAsyncData.valid ||
293292
!_.isEmpty(this.validationErrorStack) ||
294293
_.isString(this.errorAsync) ||
295294
_.isString(this.errorSync)
@@ -743,15 +742,15 @@ export default class Field extends Base implements FieldInterface {
743742
this.showErrors(true, deep);
744743
}
745744

746-
setValidationAsyncData(valid: boolean = false, message: string = ""): void {
745+
setValidationAsyncData(valid: boolean = false, message: string|null = null): void {
747746
this.validationAsyncData = { valid, message };
748747
}
749748

750749
resetValidation(deep: boolean = false): void {
751750
this.showError = false;
752751
this.errorSync = null;
753752
this.errorAsync = null;
754-
this.validationAsyncData = undefined;
753+
this.validationAsyncData = { valid: true, message: null };
755754
this.validationFunctionsData = [];
756755
this.validationErrorStack = [];
757756
Promise.resolve().then(action(() => {
@@ -825,7 +824,7 @@ export default class Field extends Base implements FieldInterface {
825824
showErrors(show: boolean = true, deep: boolean = true): void {
826825
this.showError = show;
827826
this.errorSync = _.head(this.validationErrorStack) as string || null;
828-
this.errorAsync = (this.validationAsyncData?.valid === false) ? this.validationAsyncData?.message as string : null
827+
this.errorAsync = !this.validationAsyncData.valid ? this.validationAsyncData.message : null
829828
deep && this.each((field: FieldInterface) => field.showErrors(show, deep));
830829
}
831830

src/models/FieldInterface.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export interface FieldInterface extends BaseInterface {
1616
errorAsync: string | null;
1717
validationErrorStack: string[];
1818
validationFunctionsData: any[];
19-
validationAsyncData: { valid?: boolean, message?: string | null;};
19+
validationAsyncData: { valid: boolean, message: string | null };
2020
debouncedValidation: any;
2121
autoFocus: boolean;
2222
inputMode: string;
@@ -70,7 +70,7 @@ export interface FieldInterface extends BaseInterface {
7070
// checkValidationPlugins(): void;
7171
initNestedFields(field: any, update: boolean): void;
7272
invalidate(message?: string, deep?: boolean, async?: boolean): void;
73-
setValidationAsyncData(valid?: boolean, message?: string): void;
73+
setValidationAsyncData(valid: boolean, message?: string|null): void;
7474
resetValidation(deep: boolean): void;
7575
clear(deep?: boolean): void;
7676
reset(deep?: boolean): void;

src/validators/DVR.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import _ from "lodash";
22
import FieldInterface from "src/models/FieldInterface";
33
import FormInterface from "src/models/FormInterface";
4+
import StateInterface from "src/models/StateInterface";
45
import { ValidationPlugin, ValidationPluginConfig, ValidationPluginConstructor, ValidationPluginInterface } from "src/models/ValidatorInterface";
56

67
export class DVR<TValidator = any> implements ValidationPluginInterface<TValidator> {
78
promises: Promise<any>[];
89
config: any;
9-
state: any;
10+
state: StateInterface;
1011
extend?: (args: { validator: TValidator; form: FormInterface }) => void;
1112
validator: TValidator;
1213
schema?: any;

src/validators/JOI.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import _ from "lodash";
22
import FieldInterface from "src/models/FieldInterface";
33
import FormInterface from "src/models/FormInterface";
4+
import StateInterface from "src/models/StateInterface";
45
import {
56
ValidationPlugin,
67
ValidationPluginConfig,
@@ -11,7 +12,7 @@ import {
1112
class JOI<TValidator = any> implements ValidationPluginInterface<TValidator> {
1213
promises: Promise<any>[];
1314
config: ValidationPluginConfig<TValidator>;
14-
state: any;
15+
state: StateInterface;
1516
extend?: (args: { validator: TValidator; form: FormInterface }) => void;
1617
validator: TValidator;
1718
schema: any;

src/validators/SVK.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import _ from "lodash";
22
import FieldInterface from "src/models/FieldInterface";
33
import FormInterface from "src/models/FormInterface";
4+
import StateInterface from "src/models/StateInterface";
45
import {
56
ValidationPlugin,
67
ValidationPluginConfig,
@@ -19,7 +20,7 @@ function isPromise(obj: any): obj is Promise<any> {
1920
class SVK<TValidator = any> implements ValidationPluginInterface<TValidator> {
2021
promises: Promise<any>[];
2122
config: ValidationPluginConfig<TValidator>;
22-
state: any;
23+
state: StateInterface;
2324
extend?: (args: { validator: TValidator; form: FormInterface }) => void;
2425
validator: any;
2526
schema: any;
@@ -104,9 +105,8 @@ class SVK<TValidator = any> implements ValidationPluginInterface<TValidator> {
104105
}
105106

106107
executeAsyncValidation(field: FieldInterface): void {
107-
const asyncData = field.validationAsyncData;
108-
if (asyncData.valid === false) {
109-
field.invalidate(asyncData.message, false, true);
108+
if (field.validationAsyncData.valid === false) {
109+
field.invalidate(field.validationAsyncData.message, false, true);
110110
}
111111
}
112112
}

src/validators/VJF.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import _ from "lodash";
22
import FieldInterface from "src/models/FieldInterface";
33
import FormInterface from "src/models/FormInterface";
4+
import StateInterface from "src/models/StateInterface";
45
import {
56
ValidationPlugin,
67
ValidationPluginConfig,
@@ -19,7 +20,7 @@ function isPromise(obj: any): obj is Promise<any> {
1920
export class VJF<TValidator = any> implements ValidationPluginInterface<TValidator> {
2021
promises: Promise<any>[];
2122
config: ValidationPluginConfig<TValidator>;
22-
state: any;
23+
state: StateInterface;
2324
extend?: (args: { validator: TValidator; form: FormInterface }) => void;
2425
validator: TValidator;
2526

@@ -82,9 +83,8 @@ export class VJF<TValidator = any> implements ValidationPluginInterface<TValidat
8283
}
8384

8485
executeAsyncValidation(field: FieldInterface): void {
85-
const data = field.validationAsyncData;
86-
if (data.valid === false) {
87-
field.invalidate(data.message, false, true);
86+
if (field.validationAsyncData.valid === false) {
87+
field.invalidate(field.validationAsyncData.message, false, true);
8888
}
8989
}
9090

src/validators/YUP.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import {
44
ValidationPluginConstructor,
55
ValidationPluginInterface,
66
} from "../models/ValidatorInterface";
7-
import _ from "lodash";
87
import FormInterface from "src/models/FormInterface";
8+
import StateInterface from "src/models/StateInterface";
99

1010
class YUP<TValidator = any> implements ValidationPluginInterface {
1111
promises: Promise<any>[] = [];
1212
config: ValidationPluginConfig<TValidator>;
13-
state: any;
13+
state: StateInterface;
1414
extend?: (args: { validator: TValidator; form: FormInterface }) => void;
1515
validator: TValidator;
1616
schema: any;

src/validators/ZOD.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import _ from "lodash";
22
import FieldInterface from "src/models/FieldInterface";
33
import FormInterface from "src/models/FormInterface";
4-
import { ZodSchema, ZodError } from "zod";
4+
import StateInterface from "src/models/StateInterface";
5+
import { ZodSchema } from "zod";
56
import {
67
ValidationPlugin,
78
ValidationPluginConfig,
@@ -12,7 +13,7 @@ import {
1213
export class ZOD<TValidator = any> implements ValidationPluginInterface {
1314
promises: Promise<any>[];
1415
config: ValidationPluginConfig;
15-
state: any;
16+
state: StateInterface;
1617
extend?: (args: { validator: TValidator; form: FormInterface }) => void;
1718
validator: any;
1819
schema: ZodSchema<any>;

0 commit comments

Comments
 (0)