1414// You should have received a copy of the GNU Affero General Public License
1515// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616
17- import React , { Fragment } from "react" ;
18- import { ErrorResponseHandler } from "../../../common/types" ;
17+ import React , { Fragment , useState } from "react" ;
1918import { ConfirmDeleteIcon } from "mds" ;
2019import { encodeURLString } from "../../../common/utils" ;
2120import { setErrorSnackMessage } from "../../../systemSlice" ;
2221import { useAppDispatch } from "../../../store" ;
2322import ConfirmDialog from "../Common/ModalWrapper/ConfirmDialog" ;
24- import useApi from "../Common/Hooks/useApi" ;
23+ import { api } from "api" ;
24+ import { errorToHandler } from "api/errors" ;
25+ import { HttpResponse } from "api/consoleApi" ;
2526
2627interface IDeleteGroup {
2728 selectedGroups : string [ ] ;
@@ -35,21 +36,26 @@ const DeleteGroup = ({
3536 closeDeleteModalAndRefresh,
3637} : IDeleteGroup ) => {
3738 const dispatch = useAppDispatch ( ) ;
38- const onDelSuccess = ( ) => closeDeleteModalAndRefresh ( true ) ;
39- const onDelError = ( err : ErrorResponseHandler ) => {
40- dispatch ( setErrorSnackMessage ( err ) ) ;
41- closeDeleteModalAndRefresh ( false ) ;
42- } ;
4339 const onClose = ( ) => closeDeleteModalAndRefresh ( false ) ;
44-
45- const [ deleteLoading , invokeDeleteApi ] = useApi ( onDelSuccess , onDelError ) ;
40+ const [ loadingDelete , setLoadingDelete ] = useState < boolean > ( false ) ;
4641
4742 if ( ! selectedGroups ) {
4843 return null ;
4944 }
5045 const onDeleteGroups = ( ) => {
5146 for ( let group of selectedGroups ) {
52- invokeDeleteApi ( "DELETE" , `/api/v1/group/${ encodeURLString ( group ) } ` ) ;
47+ setLoadingDelete ( true ) ;
48+ api . group
49+ . removeGroup ( encodeURLString ( group ) )
50+ . then ( ( _ ) => {
51+ closeDeleteModalAndRefresh ( true ) ;
52+ } )
53+ . catch ( async ( res : HttpResponse < void , Error > ) => {
54+ const err = ( await res . json ( ) ) as Error ;
55+ dispatch ( setErrorSnackMessage ( errorToHandler ( err ) ) ) ;
56+ closeDeleteModalAndRefresh ( false ) ;
57+ } )
58+ . finally ( ( ) => setLoadingDelete ( false ) ) ;
5359 }
5460 } ;
5561
@@ -65,7 +71,7 @@ const DeleteGroup = ({
6571 confirmText = { "Delete" }
6672 isOpen = { deleteOpen }
6773 titleIcon = { < ConfirmDeleteIcon /> }
68- isLoading = { deleteLoading }
74+ isLoading = { loadingDelete }
6975 onConfirm = { onDeleteGroups }
7076 onClose = { onClose }
7177 confirmationContent = {
0 commit comments