@@ -8,8 +8,9 @@ import {initViewedCheckboxListenerFor, countAndUpdateViewedFiles, initExpandAndC
8
8
import { initImageDiff } from './imagediff.js' ;
9
9
import { showErrorToast } from '../modules/toast.js' ;
10
10
import { submitEventSubmitter } from '../utils/dom.js' ;
11
+ import { POST , GET } from '../modules/fetch.js' ;
11
12
12
- const { csrfToken , pageData, i18n} = window . config ;
13
+ const { pageData, i18n} = window . config ;
13
14
14
15
function initRepoDiffReviewButton ( ) {
15
16
const $reviewBox = $ ( '#review-box' ) ;
@@ -63,8 +64,9 @@ function initRepoDiffConversationForm() {
63
64
if ( isSubmittedByButton && submitter . name ) {
64
65
formData . append ( submitter . name , submitter . value ) ;
65
66
}
66
- const formDataString = String ( new URLSearchParams ( formData ) ) ;
67
- const $newConversationHolder = $ ( await $ . post ( $form . attr ( 'action' ) , formDataString ) ) ;
67
+
68
+ const response = await POST ( $form . attr ( 'action' ) , { data : formData } ) ;
69
+ const $newConversationHolder = $ ( await response . text ( ) ) ;
68
70
const { path, side, idx} = $newConversationHolder . data ( ) ;
69
71
70
72
$form . closest ( '.conversation-holder' ) . replaceWith ( $newConversationHolder ) ;
@@ -75,7 +77,8 @@ function initRepoDiffConversationForm() {
75
77
}
76
78
$newConversationHolder . find ( '.dropdown' ) . dropdown ( ) ;
77
79
initCompReactionSelector ( $newConversationHolder ) ;
78
- } catch { // here the caught error might be a jQuery AJAX error (thrown by await $.post), which is not good to use for error message handling
80
+ } catch ( error ) {
81
+ console . error ( 'Error:' , error ) ;
79
82
showErrorToast ( i18n . network_error ) ;
80
83
} finally {
81
84
$form . removeClass ( 'is-loading' ) ;
@@ -89,15 +92,25 @@ function initRepoDiffConversationForm() {
89
92
const action = $ ( this ) . data ( 'action' ) ;
90
93
const url = $ ( this ) . data ( 'update-url' ) ;
91
94
92
- const data = await $ . post ( url , { _csrf : csrfToken , origin, action, comment_id} ) ;
95
+ const params = new URLSearchParams ( ) ;
96
+ params . append ( 'origin' , origin ) ;
97
+ params . append ( 'action' , action ) ;
98
+ params . append ( 'comment_id' , comment_id ) ;
93
99
94
- if ( $ ( this ) . closest ( '.conversation-holder' ) . length ) {
95
- const conversation = $ ( data ) ;
96
- $ ( this ) . closest ( '.conversation-holder' ) . replaceWith ( conversation ) ;
97
- conversation . find ( '.dropdown' ) . dropdown ( ) ;
98
- initCompReactionSelector ( conversation ) ;
99
- } else {
100
- window . location . reload ( ) ;
100
+ try {
101
+ const response = await POST ( url , { data : params } ) ;
102
+ const data = await response . text ( ) ;
103
+
104
+ if ( $ ( this ) . closest ( '.conversation-holder' ) . length ) {
105
+ const conversation = $ ( data ) ;
106
+ $ ( this ) . closest ( '.conversation-holder' ) . replaceWith ( conversation ) ;
107
+ conversation . find ( '.dropdown' ) . dropdown ( ) ;
108
+ initCompReactionSelector ( conversation ) ;
109
+ } else {
110
+ window . location . reload ( ) ;
111
+ }
112
+ } catch ( error ) {
113
+ console . error ( 'Error:' , error ) ;
101
114
}
102
115
} ) ;
103
116
}
@@ -132,18 +145,18 @@ function onShowMoreFiles() {
132
145
initImageDiff ( ) ;
133
146
}
134
147
135
- export function loadMoreFiles ( url ) {
148
+ export async function loadMoreFiles ( url ) {
136
149
const $target = $ ( 'a#diff-show-more-files' ) ;
137
150
if ( $target . hasClass ( 'disabled' ) || pageData . diffFileInfo . isLoadingNewData ) {
138
151
return ;
139
152
}
140
153
141
154
pageData . diffFileInfo . isLoadingNewData = true ;
142
155
$target . addClass ( 'disabled' ) ;
143
- $ . ajax ( {
144
- type : 'GET' ,
145
- url,
146
- } ) . done ( ( resp ) => {
156
+
157
+ try {
158
+ const response = await GET ( url ) ;
159
+ const resp = await response . text ( ) ;
147
160
const $resp = $ ( resp ) ;
148
161
// the response is a full HTML page, we need to extract the relevant contents:
149
162
// 1. append the newly loaded file list items to the existing list
@@ -152,10 +165,13 @@ export function loadMoreFiles(url) {
152
165
$ ( 'body' ) . append ( $resp . find ( 'script#diff-data-script' ) ) ;
153
166
154
167
onShowMoreFiles ( ) ;
155
- } ) . always ( ( ) => {
168
+ } catch ( error ) {
169
+ console . error ( 'Error:' , error ) ;
170
+ showErrorToast ( 'An error occurred while loading more files.' ) ;
171
+ } finally {
156
172
$target . removeClass ( 'disabled' ) ;
157
173
pageData . diffFileInfo . isLoadingNewData = false ;
158
- } ) ;
174
+ }
159
175
}
160
176
161
177
function initRepoDiffShowMore ( ) {
@@ -167,7 +183,7 @@ function initRepoDiffShowMore() {
167
183
loadMoreFiles ( linkLoadMore ) ;
168
184
} ) ;
169
185
170
- $ ( document ) . on ( 'click' , 'a.diff-load-button' , ( e ) => {
186
+ $ ( document ) . on ( 'click' , 'a.diff-load-button' , async ( e ) => {
171
187
e . preventDefault ( ) ;
172
188
const $target = $ ( e . target ) ;
173
189
@@ -178,19 +194,22 @@ function initRepoDiffShowMore() {
178
194
$target . addClass ( 'disabled' ) ;
179
195
180
196
const url = $target . data ( 'href' ) ;
181
- $ . ajax ( {
182
- type : 'GET' ,
183
- url,
184
- } ) . done ( ( resp ) => {
197
+
198
+ try {
199
+ const response = await GET ( url ) ;
200
+ const resp = await response . text ( ) ;
201
+
185
202
if ( ! resp ) {
186
203
$target . removeClass ( 'disabled' ) ;
187
204
return ;
188
205
}
189
206
$target . parent ( ) . replaceWith ( $ ( resp ) . find ( '#diff-file-boxes .diff-file-body .file-body' ) . children ( ) ) ;
190
207
onShowMoreFiles ( ) ;
191
- } ) . fail ( ( ) => {
208
+ } catch ( error ) {
209
+ console . error ( 'Error:' , error ) ;
210
+ } finally {
192
211
$target . removeClass ( 'disabled' ) ;
193
- } ) ;
212
+ }
194
213
} ) ;
195
214
}
196
215
0 commit comments