@@ -99,26 +99,21 @@ export default function Home() {
99
99
} ) ;
100
100
} ;
101
101
102
- async function deleteQuestion ( q : Question ) {
103
- await DeleteQuestionByDocref ( q . docRefId ) ;
104
- loadQuestions ( ) ;
105
- }
106
-
107
- function loadQuestions ( ) {
102
+ async function loadQuestions ( ) {
108
103
if ( ! isLoading ) {
109
104
setIsLoading ( true ) ;
110
105
}
111
106
112
- GetQuestions ( currentPage , limit ) . then ( ( data ) => {
113
- setQuestions ( data . questions ) ;
114
- setTotalCount ( data . totalCount ) ;
115
- setTotalPages ( data . totalPages ) ;
116
- setCurrentPage ( data . currentPage ) ;
117
- setLimit ( data . limit ) ;
118
- setIsLoading ( false ) ;
119
- } ) ;
107
+ let data = await GetQuestions ( currentPage , limit ) ;
108
+ setQuestions ( data . questions ) ;
109
+ setTotalCount ( data . totalCount ) ;
110
+ setTotalPages ( data . totalPages ) ;
111
+ setCurrentPage ( data . currentPage ) ;
112
+ setLimit ( data . limit ) ;
113
+ setIsLoading ( false ) ;
120
114
}
121
- useEffect ( loadQuestions , [ limit , currentPage ] ) ;
115
+
116
+ useEffect ( ( ) => { loadQuestions ( ) } , [ limit , currentPage ] ) ;
122
117
123
118
// Table column specification
124
119
const columns : TableProps < Question > [ "columns" ] = [
@@ -171,11 +166,11 @@ export default function Home() {
171
166
danger
172
167
icon = { < DeleteOutlined /> }
173
168
onClick = { ( ) => {
174
- if ( questions == undefined ) {
169
+ if ( questions === undefined ) {
175
170
throw new Error ( "questions is undefined" )
176
171
}
177
- let toDelete = questions . findIndex ( row => row . id == id )
178
- if ( toDelete == - 1 ) {
172
+ let toDelete = questions . findIndex ( row => row . id === id )
173
+ if ( toDelete === - 1 ) {
179
174
error ( "Could not find id" ) ;
180
175
return ;
181
176
}
@@ -221,6 +216,36 @@ export default function Home() {
221
216
setCurrentPage ( pageNumber ) ;
222
217
} ;
223
218
219
+ const confirmDeleteHandler = async ( ) => {
220
+ if ( ! ( "index" in deletionStage ) || deletionStage . deleteConfirmed ) {
221
+ error ( "Cannot delete: invalid deletionStage" ) ;
222
+ return ;
223
+ }
224
+ if ( questions == undefined ) {
225
+ error ( "Cannot delete: questions does not exist" ) ;
226
+ return ;
227
+ }
228
+ if ( currentPage == undefined ) {
229
+ error ( "Cannot delete: currentPage does not exist" ) ;
230
+ return ;
231
+ }
232
+
233
+ setDeletionStage ( { index : deletionStage . index , deleteConfirmed : true } ) ;
234
+ await DeleteQuestionByDocref ( questions [ deletionStage . index ] . docRefId ) ;
235
+ if ( questions . length == 1 && currentPage > 1 ) {
236
+ setCurrentPage ( currentPage - 1 ) ;
237
+ } else {
238
+ try {
239
+ await loadQuestions ( ) ;
240
+ } catch ( err ) {
241
+ if ( typeof err == 'string' ) {
242
+ error ( err ) ;
243
+ }
244
+ }
245
+ }
246
+ setDeletionStage ( { } ) ;
247
+
248
+ } ;
224
249
return (
225
250
< div >
226
251
{ contextHolder }
@@ -310,28 +335,7 @@ export default function Home() {
310
335
</ Content >
311
336
</ Layout >
312
337
{ ( "index" in deletionStage && questions != undefined ) && < DeleteModal
313
- okHandler = { ( ) => {
314
- if ( ! ( "index" in deletionStage ) ) {
315
- error ( "Cannot delete: no index" ) ;
316
- return ;
317
- }
318
- if ( deletionStage . deleteConfirmed ) {
319
- error ( "Cannot delete: still deleting" ) ;
320
- return ;
321
- }
322
- setDeletionStage ( { index : deletionStage . index , deleteConfirmed : true } )
323
-
324
- deleteQuestion ( questions [ deletionStage . index ] )
325
- . then ( ( ) => {
326
- success ( "Question successfully deleted" )
327
- } )
328
- . catch ( err => {
329
- error ( err ) ;
330
- } )
331
- . finally ( ( ) => {
332
- setDeletionStage ( { } )
333
- } )
334
- } }
338
+ okHandler = { confirmDeleteHandler }
335
339
cancelHandler = { ( ) => setDeletionStage ( { } ) }
336
340
questionTitle = { questions [ deletionStage . index ] . title }
337
341
isDeleting = { deletionStage . deleteConfirmed } /> }
0 commit comments