1- import { useState } from "react" ;
21import { Alert , Box , Button , Dialog , DialogActions , DialogContent , DialogTitle , LinearProgress } from "@mui/material" ;
32import { cliApi , errorHandlerApi } from "../../../services" ;
3+ import { useAsyncOperation } from "../../../services/hooks" ;
44import { exportModViewProfile , type ProfileCommandTree } from "../utils/commandTreeInitialization" ;
55import { type CLIModViewProfiles } from "../interfaces" ;
66
@@ -17,8 +17,8 @@ interface GenerateDialogProps {
1717}
1818
1919const GenerateDialog = ( props : GenerateDialogProps ) => {
20- const [ updating , setUpdating ] = useState < boolean > ( false ) ;
21- const [ invalidText , setInvalidText ] = useState < string | undefined > ( undefined ) ;
20+ const updateAllOperation = useAsyncOperation ( cliApi . updateCliModule ) ;
21+ const updateModifiedOperation = useAsyncOperation ( cliApi . patchCliModule ) ;
2222
2323 const handleClose = ( ) => {
2424 props . onClose ( false ) ;
@@ -34,15 +34,11 @@ const GenerateDialog = (props: GenerateDialogProps) => {
3434 profiles : profiles ,
3535 } ;
3636
37- setUpdating ( true ) ;
3837 try {
39- await cliApi . updateCliModule ( props . repoName , props . moduleName , data ) ;
40- setUpdating ( false ) ;
38+ await updateAllOperation . execute ( props . repoName , props . moduleName , data ) ;
4139 props . onClose ( true ) ;
42- } catch ( err : any ) {
43- console . error ( err ) ;
44- setInvalidText ( errorHandlerApi . getErrorMessage ( err ) ) ;
45- setUpdating ( false ) ;
40+ } catch ( error ) {
41+ console . error ( "Generate all failed:" , error ) ;
4642 }
4743 } ;
4844
@@ -56,36 +52,35 @@ const GenerateDialog = (props: GenerateDialogProps) => {
5652 profiles : profiles ,
5753 } ;
5854
59- setUpdating ( true ) ;
6055 try {
61- await cliApi . patchCliModule ( props . repoName , props . moduleName , data ) ;
62- setUpdating ( false ) ;
56+ await updateModifiedOperation . execute ( props . repoName , props . moduleName , data ) ;
6357 props . onClose ( true ) ;
64- } catch ( err : any ) {
65- console . error ( err ) ;
66- setInvalidText ( errorHandlerApi . getErrorMessage ( err ) ) ;
67- setUpdating ( false ) ;
58+ } catch ( error ) {
59+ console . error ( "Generate modified failed:" , error ) ;
6860 }
6961 } ;
7062
63+ const isLoading = updateAllOperation . loading || updateModifiedOperation . loading ;
64+ const error = updateAllOperation . error || updateModifiedOperation . error ;
65+
7166 return (
7267 < Dialog disableEscapeKeyDown open = { props . open } >
7368 < DialogTitle > Generate CLI commands to { props . moduleName } </ DialogTitle >
7469 < DialogContent >
75- { invalidText && (
70+ { error && (
7671 < Alert variant = "filled" severity = "error" >
7772 { " " }
78- { invalidText } { " " }
73+ { errorHandlerApi . getErrorMessage ( error ) } { " " }
7974 </ Alert >
8075 ) }
8176 </ DialogContent >
8277 < DialogActions >
83- { updating && (
78+ { isLoading && (
8479 < Box sx = { { width : "100%" } } >
8580 < LinearProgress color = "secondary" />
8681 </ Box >
8782 ) }
88- { ! updating && (
83+ { ! isLoading && (
8984 < >
9085 < Button onClick = { handleClose } > Cancel</ Button >
9186 < Button onClick = { handleGenerateAll } > Generate All</ Button >
0 commit comments