@ -1,4 +1,4 @@
import { Switch , Button , Collapse } from 'antd' ;
import { Switch , Button , Collapse , Alert } from 'antd' ;
import classNames from 'classnames' ;
import classNames from 'classnames' ;
import React , { useContext , useState , useEffect } from 'react' ;
import React , { useContext , useState , useEffect } from 'react' ;
import { UpdateArgs } from '../../../types/config-section' ;
import { UpdateArgs } from '../../../types/config-section' ;
@ -18,7 +18,7 @@ import {
} from '../../../utils/input-statuses' ;
} from '../../../utils/input-statuses' ;
import TextField from './form-textfield' ;
import TextField from './form-textfield' ;
import FormStatusIndicator from './form-status-indicator' ;
import FormStatusIndicator from './form-status-indicator' ;
import { isValidUrl } from '../../../utils/urls' ;
import { isValidUrl } from '../../../utils/urls' ;
const { Panel } = Collapse ;
const { Panel } = Collapse ;
@ -52,6 +52,7 @@ function checkSaveable(formValues: any, currentValues: any) {
export default function EditStorage() {
export default function EditStorage() {
const [ formDataValues , setFormDataValues ] = useState ( null ) ;
const [ formDataValues , setFormDataValues ] = useState ( null ) ;
const [ submitStatus , setSubmitStatus ] = useState < StatusState > ( null ) ;
const [ submitStatus , setSubmitStatus ] = useState < StatusState > ( null ) ;
const [ saved , setSaved ] = useState < Boolean > ( false ) ;
const [ shouldDisplayForm , setShouldDisplayForm ] = useState ( false ) ;
const [ shouldDisplayForm , setShouldDisplayForm ] = useState ( false ) ;
const serverStatusData = useContext ( ServerStatusContext ) ;
const serverStatusData = useContext ( ServerStatusContext ) ;
@ -114,6 +115,7 @@ export default function EditStorage() {
setFieldInConfigState ( { fieldName : 's3' , value : postValue , path : '' } ) ;
setFieldInConfigState ( { fieldName : 's3' , value : postValue , path : '' } ) ;
setSubmitStatus ( createInputStatus ( STATUS_SUCCESS , 'Updated.' ) ) ;
setSubmitStatus ( createInputStatus ( STATUS_SUCCESS , 'Updated.' ) ) ;
resetTimer = setTimeout ( resetStates , RESET_TIMEOUT ) ;
resetTimer = setTimeout ( resetStates , RESET_TIMEOUT ) ;
setSaved ( true ) ;
} ,
} ,
onError : ( message : string ) = > {
onError : ( message : string ) = > {
setSubmitStatus ( createInputStatus ( STATUS_ERROR , message ) ) ;
setSubmitStatus ( createInputStatus ( STATUS_ERROR , message ) ) ;
@ -139,6 +141,14 @@ export default function EditStorage() {
enabled : shouldDisplayForm ,
enabled : shouldDisplayForm ,
} ) ;
} ) ;
const saveWarning = saved ? ( < Alert
showIcon
message = "Storage changes"
description = "Your storage settings will take effect on your next stream. If you're currently streaming you'll continue to use the storage configuration previously set."
type = "warning"
/ >
) : null ;
const isSaveable = checkSaveable ( formDataValues , s3 ) ;
const isSaveable = checkSaveable ( formDataValues , s3 ) ;
return (
return (
@ -211,6 +221,8 @@ export default function EditStorage() {
< / Collapse >
< / Collapse >
< / div >
< / div >
{ saveWarning }
< div className = "button-container" >
< div className = "button-container" >
< Button type = "primary" onClick = { handleSave } disabled = { ! isSaveable } >
< Button type = "primary" onClick = { handleSave } disabled = { ! isSaveable } >
Save
Save