14
14
// You should have received a copy of the GNU Affero General Public License
15
15
// along with this program. If not, see <http://www.gnu.org/licenses/>.
16
16
17
- import React , { Fragment } from "react" ;
17
+ import React , { Fragment , useState } from "react" ;
18
18
import { ConfirmDeleteIcon } from "mds" ;
19
- import { ErrorResponseHandler } from "../../../../common/types" ;
20
19
import { setErrorSnackMessage } from "../../../../systemSlice" ;
21
20
import { useAppDispatch } from "../../../../store" ;
22
- import useApi from "../../Common/Hooks/useApi" ;
21
+ import { api } from "api" ;
22
+ import { ApiError , HttpResponse , PrefixWrapper } from "api/consoleApi" ;
23
+ import { errorToHandler } from "api/errors" ;
23
24
import ConfirmDialog from "../../Common/ModalWrapper/ConfirmDialog" ;
24
25
25
26
interface IDeleteAccessRule {
@@ -36,24 +37,31 @@ const DeleteAccessRule = ({
36
37
toDelete,
37
38
} : IDeleteAccessRule ) => {
38
39
const dispatch = useAppDispatch ( ) ;
39
- const onDelSuccess = ( ) => onClose ( ) ;
40
- const onDelError = ( err : ErrorResponseHandler ) =>
41
- dispatch ( setErrorSnackMessage ( err ) ) ;
42
40
43
- const [ deleteLoading , invokeDeleteApi ] = useApi ( onDelSuccess , onDelError ) ;
41
+ const [ loadingDeleteAccessRule , setLoadingDeleteAccessRule ] =
42
+ useState < boolean > ( false ) ;
44
43
45
44
const onConfirmDelete = ( ) => {
46
- invokeDeleteApi ( "DELETE" , `/api/v1/bucket/${ bucket } /access-rules` , {
47
- prefix : toDelete ,
48
- } ) ;
45
+ setLoadingDeleteAccessRule ( true ) ;
46
+ let wrapper : PrefixWrapper = { prefix : toDelete } ;
47
+ api . bucket
48
+ . deleteAccessRuleWithBucket ( bucket , wrapper )
49
+ . then ( ( ) => {
50
+ onClose ( ) ;
51
+ } )
52
+ . catch ( ( res : HttpResponse < boolean , ApiError > ) => {
53
+ dispatch ( setErrorSnackMessage ( errorToHandler ( res . error ) ) ) ;
54
+ onClose ( ) ;
55
+ } )
56
+ . finally ( ( ) => setLoadingDeleteAccessRule ( false ) ) ;
49
57
} ;
50
58
51
59
return (
52
60
< ConfirmDialog
53
61
title = { `Delete Anonymous Access Rule` }
54
62
confirmText = { "Delete" }
55
63
isOpen = { modalOpen }
56
- isLoading = { deleteLoading }
64
+ isLoading = { loadingDeleteAccessRule }
57
65
onConfirm = { onConfirmDelete }
58
66
titleIcon = { < ConfirmDeleteIcon /> }
59
67
onClose = { onClose }
0 commit comments