9 changed files with 113 additions and 112 deletions
@ -1,51 +0,0 @@
@@ -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 @@
@@ -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