@@ -25,6 +25,7 @@ export default class ImageInput extends React.Component {
25
25
this . state = {
26
26
newBasicInfo : { } ,
27
27
isImageOversize : false ,
28
+ isImageFile : true ,
28
29
} ;
29
30
}
30
31
@@ -72,6 +73,13 @@ export default class ImageInput extends React.Component {
72
73
if ( file === undefined ) {
73
74
return ;
74
75
}
76
+ const allowedTypes = [ 'image/png' , 'image/jpg' , 'image/jpeg' ] ;
77
+ if ( ! allowedTypes . includes ( file . type ) ) {
78
+ this . setState ( {
79
+ isImageFile : false ,
80
+ } ) ;
81
+ return ;
82
+ }
75
83
if ( file . size > 2 * 1024 * 1024 ) {
76
84
// If file size is greater than 2 MB, show error message
77
85
this . setState ( {
@@ -81,6 +89,7 @@ export default class ImageInput extends React.Component {
81
89
}
82
90
this . setState ( {
83
91
isImageOversize : false ,
92
+ isImageFile : true ,
84
93
} ) ;
85
94
uploadPhotoInit ( ) ;
86
95
loadImage . parseMetaData ( file , ( data ) => {
@@ -126,7 +135,7 @@ export default class ImageInput extends React.Component {
126
135
deletingPhoto,
127
136
} = profileState ;
128
137
129
- const { newBasicInfo, isImageOversize } = this . state ;
138
+ const { newBasicInfo, isImageOversize, isImageFile } = this . state ;
130
139
131
140
return (
132
141
< div styleName = "image" >
@@ -157,7 +166,8 @@ export default class ImageInput extends React.Component {
157
166
< input type = "file" name = "image" accept = "image/*" onChange = { this . onUploadPhoto } id = "change-image-input" className = "hidden" />
158
167
</ div >
159
168
</ div >
160
- { isImageOversize && < div styleName = "error-message" > Please select an image smaller than 2MB</ div > }
169
+ { ! isImageFile && < div styleName = "error-message" > Please select jpg, jpeg or png image files only</ div > }
170
+ { isImageFile && isImageOversize && < div styleName = "error-message" > Please select an image smaller than 2MB</ div > }
161
171
</ div >
162
172
) ;
163
173
}
0 commit comments