9 changed files with 117 additions and 111 deletions
@ -1,51 +0,0 @@ |
|||||||
import React, { useState, useEffect } from 'react'; |
|
||||||
import PropTypes from 'prop-types'; |
|
||||||
|
|
||||||
import { BROADCASTER, fetchData, FETCH_INTERVAL } from './apis'; |
|
||||||
|
|
||||||
const initialState = { |
|
||||||
broadcastActive: false, |
|
||||||
message: '', |
|
||||||
broadcaster: null, |
|
||||||
}; |
|
||||||
|
|
||||||
export const BroadcastStatusContext = React.createContext(initialState); |
|
||||||
|
|
||||||
const BroadcastStatusProvider = ({ children }) => { |
|
||||||
const [broadcasterStatus, setBroadcasterStatus] = useState(initialState); |
|
||||||
|
|
||||||
const getBroadcastStatus = async () => { |
|
||||||
try { |
|
||||||
const result = await fetchData(BROADCASTER); |
|
||||||
const broadcastActive = !!result.broadcaster || result.success; |
|
||||||
setBroadcasterStatus({ ...result, broadcastActive }); |
|
||||||
|
|
||||||
} catch (error) { |
|
||||||
setBroadcasterStatus({ ...broadcasterStatus, message: error.message }); |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
useEffect(() => { |
|
||||||
let getStatusIntervalId = null; |
|
||||||
|
|
||||||
getBroadcastStatus(); |
|
||||||
getStatusIntervalId = setInterval(getBroadcastStatus, FETCH_INTERVAL); |
|
||||||
|
|
||||||
// returned function will be called on component unmount
|
|
||||||
return () => { |
|
||||||
clearInterval(getStatusIntervalId); |
|
||||||
} |
|
||||||
}, []) |
|
||||||
|
|
||||||
return ( |
|
||||||
<BroadcastStatusContext.Provider value={broadcasterStatus}> |
|
||||||
{children} |
|
||||||
</BroadcastStatusContext.Provider> |
|
||||||
); |
|
||||||
} |
|
||||||
|
|
||||||
BroadcastStatusProvider.propTypes = { |
|
||||||
children: PropTypes.element.isRequired, |
|
||||||
}; |
|
||||||
|
|
||||||
export default BroadcastStatusProvider; |
|
@ -0,0 +1,55 @@ |
|||||||
|
import React, { useState, useEffect } from 'react'; |
||||||
|
import PropTypes from 'prop-types'; |
||||||
|
|
||||||
|
import { STATUS, fetchData, FETCH_INTERVAL } from './apis'; |
||||||
|
|
||||||
|
const initialState = { |
||||||
|
broadcastActive: false, |
||||||
|
broadcaster: null, |
||||||
|
online: false, |
||||||
|
viewerCount: 0, |
||||||
|
sessionPeakViewerCount: 0, |
||||||
|
overallPeakViewerCount: 0, |
||||||
|
disableUpgradeChecks: true, |
||||||
|
versionNumber: '0.0.0', |
||||||
|
}; |
||||||
|
|
||||||
|
export const ServerStatusContext = React.createContext(initialState); |
||||||
|
|
||||||
|
const ServerStatusProvider = ({ children }) => { |
||||||
|
const [status, setStatus] = useState(initialState); |
||||||
|
|
||||||
|
const getStatus = async () => { |
||||||
|
try { |
||||||
|
const result = await fetchData(STATUS); |
||||||
|
setStatus({ ...result }); |
||||||
|
|
||||||
|
} catch (error) { |
||||||
|
// setBroadcasterStatus({ ...broadcasterStatus, message: error.message });
|
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
useEffect(() => { |
||||||
|
let getStatusIntervalId = null; |
||||||
|
|
||||||
|
getStatus(); |
||||||
|
getStatusIntervalId = setInterval(getStatus, FETCH_INTERVAL); |
||||||
|
|
||||||
|
// returned function will be called on component unmount
|
||||||
|
return () => { |
||||||
|
clearInterval(getStatusIntervalId); |
||||||
|
} |
||||||
|
}, []) |
||||||
|
|
||||||
|
return ( |
||||||
|
<ServerStatusContext.Provider value={status}> |
||||||
|
{children} |
||||||
|
</ServerStatusContext.Provider> |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
ServerStatusProvider.propTypes = { |
||||||
|
children: PropTypes.element.isRequired, |
||||||
|
}; |
||||||
|
|
||||||
|
export default ServerStatusProvider; |
Loading…
Reference in new issue