@@ -16,52 +16,43 @@ const schema = yup
1616 . url ( "Ссылка должна быть валидным URL" )
1717 . required ( "Обязательное поле" )
1818 . test (
19+ "no-duplicate" ,
1920 "Эта лента уже добавлена" ,
2021 ( value ) => ! state . rssFeed . includes ( value )
2122 ) ;
2223
23- const validateInput = ( value ) => {
24- try {
25- schema . validateSync ( value , { abortEarly : false } ) ;
26- return true ;
27- } catch ( error ) {
28- if ( error instanceof yup . ValidationError ) {
29- state . errors = error . errors ;
30- return false ;
31- }
32- throw error ;
33- }
34- } ;
35-
3624
3725export const createModel = ( ) => {
26+ const validateInput = ( value ) => {
27+ return schema
28+ . validate ( value )
29+ . then ( ( validatedValue ) => {
30+ state . errors = null ;
31+ return validatedValue ;
32+ } )
33+ . catch ( ( error ) => {
34+ if ( error instanceof yup . ValidationError ) {
35+ state . errors = error . errors ;
36+ }
37+ throw error ;
38+ } ) ;
39+ } ;
40+
3841 const updateInputValue = ( value ) => {
3942 state . inputValue = value ;
4043 state . errors = null ;
4144 } ;
4245
4346 const addRssFeed = ( ) => {
44- if ( validateInput ( state . inputValue ) ) {
45- state . rssFeed = [ ...state . rssFeed , state . inputValue ] ;
46- console . log ( "обновлён список rss" , state . rssFeed ) ;
47- state . errors = null ;
48- } else {
49- console . log ( "не прошёл валидацию:" , state . errors ) ;
50- }
47+ state . rssFeed = [ ...state . rssFeed , state . inputValue ] ;
48+ state . errors = null ;
5149 } ;
5250
5351 const getErrors = ( ) => {
5452 return state . errors ;
5553 } ;
5654
5755 return {
58- updateInputValue, addRssFeed, getErrors
59- }
60- }
61-
62-
63-
64-
65-
66-
67-
56+ updateInputValue, validateInput, addRssFeed, getErrors
57+ } ;
58+ } ;
0 commit comments