1
- import { uploadFormCloseHandler } from './image-upload.js' ;
1
+ import { uploadFormCloseHandler , documentKeydownHandler } from './image-upload.js' ;
2
2
import { unblockSubmitButton } from './image-upload.js' ;
3
+ import { isEscapeKey } from './util.js' ;
3
4
4
- const dataErrorTemplateNode = document . querySelector ( '#data-error' ) . content . querySelector ( '.data-error' ) ;
5
- const successTemplateNode = document . querySelector ( '#success' ) . content . querySelector ( '.success' ) ;
6
- const errorTemplateNode = document . querySelector ( '#error' ) . content . querySelector ( '.error' ) ;
7
5
const ERROR_TIMEOUT_MS = 5000 ;
8
6
const BASE_URL = 'https://31.javascript.htmlacademy.pro/kekstagram' ;
9
7
const Route = {
10
8
GET_DATA : '/data' ,
11
9
SEND_DATA : '/' ,
12
10
} ;
13
11
12
+ const dataErrorTemplateNode = document . querySelector ( '#data-error' ) . content . querySelector ( '.data-error' ) ;
13
+ const successTemplateNode = document . querySelector ( '#success' ) . content . querySelector ( '.success' ) ;
14
+ const errorTemplateNode = document . querySelector ( '#error' ) . content . querySelector ( '.error' ) ;
15
+ const errorMessage = errorTemplateNode . cloneNode ( true ) ;
16
+ const successMessage = successTemplateNode . cloneNode ( true ) ;
17
+
14
18
const showError = ( ) => {
15
- const errorMessage = dataErrorTemplateNode . cloneNode ( true ) ;
16
- document . body . appendChild ( errorMessage ) ;
19
+ const errorMessageNode = dataErrorTemplateNode . cloneNode ( true ) ;
20
+ document . body . appendChild ( errorMessageNode ) ;
17
21
setTimeout ( ( ) => {
18
- errorMessage . remove ( ) ;
22
+ errorMessageNode . remove ( ) ;
19
23
} , ERROR_TIMEOUT_MS ) ;
20
24
} ;
21
25
26
+
27
+ const onSuccessMessageKeydown = ( evt ) => {
28
+ if ( isEscapeKey ( evt ) ) {
29
+ evt . preventDefault ( ) ;
30
+ successMessageCloseHandler ( ) ;
31
+ successMessage . removeEventListener ( 'click' , successMessageCloseHandler ) ;
32
+ }
33
+ } ;
34
+
35
+ function successMessageCloseHandler ( ) {
36
+ successMessage . remove ( ) ;
37
+ document . removeEventListener ( 'keydown' , onSuccessMessageKeydown ) ;
38
+ }
39
+
22
40
const uploadSuccessful = ( ) => {
23
- const successMessage = successTemplateNode . cloneNode ( true ) ;
24
41
document . body . appendChild ( successMessage ) ;
42
+ document . addEventListener ( 'keydown' , onSuccessMessageKeydown ) ;
25
43
26
- const successTemplateNodeClickHandler = ( evt ) => {
44
+ successMessage . addEventListener ( 'click' , ( evt ) => {
27
45
if ( ! evt . target . closest ( 'div' ) || evt . target . closest ( 'button' ) ) {
28
- successMessage . remove ( ) ;
29
- document . body . removeEventListener ( 'click' , successTemplateNodeClickHandler ) ;
46
+ successMessageCloseHandler ( ) ;
30
47
}
31
- } ;
32
- document . body . addEventListener ( 'click' , successTemplateNodeClickHandler ) ;
48
+ } ) ;
33
49
34
50
uploadFormCloseHandler ( ) ;
35
51
} ;
36
52
53
+ const errorMessageCloseHandler = ( ) => {
54
+ errorMessage . remove ( ) ;
55
+ document . removeEventListener ( 'keydown' , errorMessageCloseHandler ) ;
56
+ document . addEventListener ( 'keydown' , documentKeydownHandler ) ;
57
+ } ;
58
+
59
+ const errorMessageKeydown = ( evt ) => {
60
+ if ( isEscapeKey ( evt ) ) {
61
+ evt . preventDefault ( ) ;
62
+ errorMessageCloseHandler ( ) ;
63
+ errorMessage . removeEventListener ( 'click' , errorMessageCloseHandler ) ;
64
+ }
65
+ } ;
66
+
37
67
const uploadError = ( ) => {
38
- const errorMessage = errorTemplateNode . cloneNode ( true ) ;
39
68
document . body . appendChild ( errorMessage ) ;
69
+ document . removeEventListener ( 'keydown' , documentKeydownHandler ) ;
70
+ document . addEventListener ( 'keydown' , errorMessageKeydown ) ;
40
71
41
- const errorTemplateNodeClickHandler = ( evt ) => {
72
+ errorMessage . addEventListener ( 'click' , ( evt ) => {
42
73
if ( ! evt . target . closest ( 'div' ) || evt . target . closest ( 'button' ) ) {
43
- errorMessage . remove ( ) ;
44
- document . body . removeEventListener ( 'click' , errorTemplateNodeClickHandler ) ;
74
+ errorMessageCloseHandler ( ) ;
45
75
}
46
- } ;
47
-
48
- document . body . addEventListener ( 'click' , errorTemplateNodeClickHandler ) ;
49
-
50
- uploadFormCloseHandler ( true ) ;
76
+ } ) ;
51
77
} ;
52
78
53
- const loadData = ( onSuccess ) => {
79
+ const loadData = ( ) =>
54
80
fetch ( `${ BASE_URL } ${ Route . GET_DATA } ` )
55
81
. then ( ( response ) => {
56
82
if ( ! response . ok ) {
57
83
throw new Error ( ) ;
58
84
}
59
85
return response . json ( ) ;
60
86
} )
61
- . then (
62
- ( picturesObjects ) => {
63
- onSuccess ( picturesObjects ) ;
64
- }
65
- )
66
- . catch ( showError ) ;
67
- } ;
87
+ . catch ( ( ) => {
88
+ showError ( ) ;
89
+ } ) ;
68
90
69
91
const uploadData = ( body ) => {
70
92
fetch (
@@ -77,10 +99,9 @@ const uploadData = (body) => {
77
99
if ( ! response . ok ) {
78
100
throw new Error ( ) ;
79
101
}
80
-
81
- return uploadSuccessful ( ) ;
102
+ uploadSuccessful ( ) ;
82
103
} ) . catch ( uploadError )
83
104
. finally ( unblockSubmitButton ) ;
84
105
} ;
85
106
86
- export { loadData , uploadData } ;
107
+ export { loadData , uploadData , showError } ;
0 commit comments