@@ -6,8 +6,14 @@ import {
66} from './check-hashtag-validity.js' ;
77
88import { resetImageEditor } from './image-editor.js' ;
9+ import { sendData } from './api.js' ;
10+ import { showSuccessMessage , showErrorMessage } from './messages.js' ;
911
1012const MAX_COMMENT_LENGTH = 140 ;
13+ const SubmitButtonText = {
14+ IDLE : 'Опубликовать' ,
15+ SENDING : 'Публикую...' ,
16+ } ;
1117
1218const bodyNode = document . body ;
1319const uploadFormNode = document . querySelector ( '.img-upload__form' ) ;
@@ -16,6 +22,7 @@ const uploadOverlayNode = uploadFormNode.querySelector('.img-upload__overlay');
1622const uploadCancelButtonNode = uploadFormNode . querySelector ( '#upload-cancel' ) ;
1723const hashtagsInputNode = uploadFormNode . querySelector ( '.text__hashtags' ) ;
1824const descriptionInputNode = uploadFormNode . querySelector ( '.text__description' ) ;
25+ const submitButtonNode = uploadFormNode . querySelector ( '.img-upload__submit' ) ;
1926
2027const pristine = new Pristine ( uploadFormNode , {
2128 classTo : 'img-upload__field-wrapper' ,
@@ -28,6 +35,13 @@ const isEscapeKey = (evt) => evt.key === 'Escape';
2835
2936const hasValidCommentLength = ( value ) => value . length <= MAX_COMMENT_LENGTH ;
3037
38+ const toggleSubmitButton = ( isDisabled ) => {
39+ submitButtonNode . disabled = isDisabled ;
40+ submitButtonNode . textContent = isDisabled
41+ ? SubmitButtonText . SENDING
42+ : SubmitButtonText . IDLE ;
43+ } ;
44+
3145const resetUploadPhotoForm = ( ) => {
3246 uploadFormNode . reset ( ) ;
3347 uploadFileControl . value = '' ;
@@ -74,11 +88,32 @@ const onUploadCancelButtonClick = (evt) => {
7488} ;
7589
7690const onUploadFormSubmit = ( evt ) => {
77- if ( ! pristine . validate ( ) ) {
78- evt . preventDefault ( ) ;
91+ evt . preventDefault ( ) ;
92+
93+ const isValid = pristine . validate ( ) ;
94+
95+ if ( isValid ) {
96+ toggleSubmitButton ( true ) ;
97+
98+ sendData ( new FormData ( evt . target ) )
99+ . then ( ( ) => {
100+ closeUploadPhotoForm ( ) ;
101+ showSuccessMessage ( ) ;
102+ } )
103+ . catch ( ( ) => {
104+ showErrorMessage ( ) ;
105+ } )
106+ . finally ( ( ) => {
107+ toggleSubmitButton ( false ) ;
108+ } ) ;
79109 }
80110} ;
81111
112+ const onUploadFormReset = ( evt ) => {
113+ evt . preventDefault ( ) ;
114+ closeUploadPhotoForm ( ) ;
115+ } ;
116+
82117pristine . addValidator (
83118 hashtagsInputNode ,
84119 hasValidHashtagFormat ,
@@ -113,6 +148,7 @@ const initUploadPhotoForm = () => {
113148 uploadFileControl . addEventListener ( 'change' , onUploadFileControlChange ) ;
114149 uploadCancelButtonNode . addEventListener ( 'click' , onUploadCancelButtonClick ) ;
115150 uploadFormNode . addEventListener ( 'submit' , onUploadFormSubmit ) ;
151+ uploadFormNode . addEventListener ( 'reset' , onUploadFormReset ) ;
116152 hashtagsInputNode . addEventListener ( 'keydown' , stopEscapePropagation ) ;
117153 descriptionInputNode . addEventListener ( 'keydown' , stopEscapePropagation ) ;
118154} ;
0 commit comments