@@ -57,6 +57,7 @@ $(() => {
5757
5858 const $fileInput = $tgt . find ( 'input[type="file"]' ) ;
5959 const files = /** @type {HTMLInputElement } */ ( $fileInput [ 0 ] ) . files ;
60+ const form = /** @type {HTMLFormElement } */ ( $tgt [ 0 ] ) ;
6061
6162 // TODO: MaxUploadSize is a site setting and can be changed
6263 if ( files . length > 0 && files [ 0 ] . size >= 2000000 ) {
@@ -80,40 +81,23 @@ $(() => {
8081 $tgt . find ( '.js-max-size' ) . removeClass ( 'has-color-red-700' ) ;
8182 }
8283
83- const resp = await fetch ( $tgt . attr ( 'action' ) , {
84- method : $tgt . attr ( 'method' ) ,
85- body : new FormData ( /** @type {HTMLFormElement } */ ( $tgt [ 0 ] ) )
84+ const data = await QPixel . upload ( $tgt . attr ( 'action' ) , form ) ;
85+
86+ QPixel . handleJSONResponse ( data , ( data ) => {
87+ form . reset ( ) ;
88+
89+ const $postField = $ ( '.js-post-field' ) ;
90+ const postText = $postField . val ( ) ?. toString ( ) ;
91+ $postField . val ( postText . replace ( placeholder , `` ) ) ;
92+ $tgt . parents ( '.modal' ) . removeClass ( 'is-active' ) ;
93+
94+ $postFields . trigger ( 'change' ) ;
95+ } , ( data ) => {
96+ if ( data . status === 'failed' ) {
97+ const $postField = $ ( '.js-post-field' ) ;
98+ $postField . val ( $postField . val ( ) ?. toString ( ) . replace ( placeholder , '' ) ) ;
99+ }
86100 } ) ;
87-
88- const data = await resp . json ( ) ;
89-
90- if ( resp . status === 200 ) {
91- $tgt . trigger ( 'ajax:success' , data ) ;
92- }
93- else {
94- $tgt . trigger ( 'ajax:failure' , data ) ;
95- }
96- } ) ;
97-
98- $uploadForm . on ( 'ajax:success' , async ( evt , data ) => {
99- const $tgt = $ ( evt . target ) ;
100- /** @type {HTMLFormElement } */ ( $tgt [ 0 ] ) . reset ( ) ;
101-
102- const $postField = $ ( '.js-post-field' ) ;
103- const postText = $postField . val ( ) ?. toString ( ) ;
104- $postField . val ( postText . replace ( placeholder , `` ) ) ;
105- $tgt . parents ( '.modal' ) . removeClass ( 'is-active' ) ;
106-
107- $postFields . trigger ( 'change' )
108- } ) ;
109-
110- $uploadForm . on ( 'ajax:failure' , async ( evt , data ) => {
111- const $tgt = $ ( evt . target ) ;
112- const $postField = $ ( '.js-post-field' ) ;
113- const error = data [ 'error' ] ;
114- QPixel . createNotification ( 'danger' , error ) ;
115- $tgt . parents ( '.modal' ) . removeClass ( 'is-active' ) ;
116- $postField . val ( $postField . val ( ) ?. toString ( ) . replace ( placeholder , '' ) ) ;
117101 } ) ;
118102
119103 /**
0 commit comments