@@ -11,6 +11,7 @@ import { FormHelperText } from '@material-ui/core'
1111
1212import { useBackend } from '../../hooks/backend'
1313import { useConfig } from '../../hooks/config'
14+ import sleep from '../../util/sleep'
1415
1516const useStyles = makeStyles ( theme => ( {
1617 button : {
@@ -32,12 +33,14 @@ interface FormData {
3233 token : string
3334}
3435
36+ // tslint:disable-next-line:cyclomatic-complexity
3537export const SettingsPage = ( ) => {
3638 const classes = useStyles ( )
3739 const { history } = useReactRouter ( )
38- const { reset , testConfig } = useBackend ( )
39- const { config, updateConfig } = useConfig ( )
40+ const { testConfig } = useBackend ( )
41+ const { config, updateConfig, removeConfig } = useConfig ( )
4042
43+ const [ confirmDelete , setConfirmDelete ] = React . useState ( false )
4144 const [ submitting , setSubmitting ] = React . useState ( false )
4245 const [ errors , setErrors ] = React . useState < FormErrorData > ( {
4346 url : '' ,
@@ -59,6 +62,16 @@ export const SettingsPage = () => {
5962 setValues ( { ...values , [ name ] : event . target . value } )
6063 }
6164
65+ const confirmRemove = async ( ) => {
66+ setConfirmDelete ( true )
67+ }
68+
69+ const remove = async ( ) => {
70+ removeConfig ( )
71+ setErrors ( { url : '' , token : '' , group : '' , invalidSettings : false } )
72+ setValues ( { url : '' , token : '' , group : '' } )
73+ }
74+
6275 const save = async ( ) => {
6376 setSubmitting ( true )
6477 setErrors ( { url : '' , token : '' , group : '' , invalidSettings : false } )
@@ -82,10 +95,9 @@ export const SettingsPage = () => {
8295
8396 try {
8497 await testConfig ( newConfig )
85-
8698 updateConfig ( newConfig )
8799
88- reset ( )
100+ await sleep ( 1000 )
89101 history . push ( '/' )
90102 } catch ( _ ) {
91103 setError ( 'invalidSettings' , true )
@@ -95,6 +107,18 @@ export const SettingsPage = () => {
95107 }
96108 }
97109
110+ const renderRemoveButton = ( ) => {
111+ return confirmDelete ? (
112+ < Button variant = 'contained' color = 'secondary' fullWidth className = { classes . button } onClick = { remove } >
113+ Are you sure?
114+ </ Button >
115+ ) : (
116+ < Button fullWidth className = { classes . button } onClick = { confirmRemove } >
117+ remove config
118+ </ Button >
119+ )
120+ }
121+
98122 return (
99123 < Container >
100124 < Typography variant = 'h6' className = { classes . headline } >
@@ -143,6 +167,7 @@ export const SettingsPage = () => {
143167 < Button variant = 'contained' color = 'primary' aria-label = 'add' fullWidth onClick = { save } className = { classes . button } disabled = { submitting } >
144168 Save
145169 </ Button >
170+ { config && ! submitting && renderRemoveButton ( ) }
146171 { config && ! submitting && (
147172 < Link to = '/' className = { classes . goBackLink } >
148173 < Button fullWidth className = { classes . button } >
0 commit comments