mirror of
https://github.com/streamwall/streamwall.git
synced 2026-04-03 20:32:08 -04:00
Improve handling of disconnected Streamdelay server
This commit is contained in:
@@ -36,8 +36,13 @@ export default class StreamdelayClient extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
emitState() {
|
emitState() {
|
||||||
|
const isConnected = this.ws.readyState === WebSocket.OPEN
|
||||||
|
if (isConnected && !this.status) {
|
||||||
|
// Wait until we've received the first status message
|
||||||
|
return
|
||||||
|
}
|
||||||
this.emit('state', {
|
this.emit('state', {
|
||||||
isConnected: this.ws.readyState === WebSocket.OPEN,
|
isConnected,
|
||||||
...this.status,
|
...this.status,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ async function main() {
|
|||||||
streams: [],
|
streams: [],
|
||||||
customStreams: [],
|
customStreams: [],
|
||||||
views: [],
|
views: [],
|
||||||
streamdelay: false,
|
streamdelay: { isConnected: false },
|
||||||
}
|
}
|
||||||
const getInitialState = () => clientState
|
const getInitialState = () => clientState
|
||||||
let broadcastState = () => {}
|
let broadcastState = () => {}
|
||||||
|
|||||||
@@ -22,7 +22,9 @@ function App({ wsEndpoint }) {
|
|||||||
const [streams, setStreams] = useState([])
|
const [streams, setStreams] = useState([])
|
||||||
const [customStreams, setCustomStreams] = useState([])
|
const [customStreams, setCustomStreams] = useState([])
|
||||||
const [stateIdxMap, setStateIdxMap] = useState(new Map())
|
const [stateIdxMap, setStateIdxMap] = useState(new Map())
|
||||||
const [delayState, setDelayState] = useState(false)
|
const [delayState, setDelayState] = useState({
|
||||||
|
isConnected: false,
|
||||||
|
})
|
||||||
const allStreams = sortBy([...streams, ...customStreams], ['_id'])
|
const allStreams = sortBy([...streams, ...customStreams], ['_id'])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -70,7 +72,7 @@ function App({ wsEndpoint }) {
|
|||||||
setStreams(newStreams)
|
setStreams(newStreams)
|
||||||
setCustomStreams(newCustomStreams)
|
setCustomStreams(newCustomStreams)
|
||||||
setDelayState(
|
setDelayState(
|
||||||
streamdelay && {
|
streamdelay.isConnected && {
|
||||||
...streamdelay,
|
...streamdelay,
|
||||||
state: State.from(streamdelay.state),
|
state: State.from(streamdelay.state),
|
||||||
},
|
},
|
||||||
@@ -228,12 +230,10 @@ function App({ wsEndpoint }) {
|
|||||||
<div>
|
<div>
|
||||||
connection status: {isConnected ? 'connected' : 'connecting...'}
|
connection status: {isConnected ? 'connected' : 'connecting...'}
|
||||||
</div>
|
</div>
|
||||||
{delayState !== false && (
|
|
||||||
<StreamDelayBox
|
<StreamDelayBox
|
||||||
delayState={delayState}
|
delayState={delayState}
|
||||||
setStreamCensored={setStreamCensored}
|
setStreamCensored={setStreamCensored}
|
||||||
/>
|
/>
|
||||||
)}
|
|
||||||
<StyledDataContainer isConnected={isConnected}>
|
<StyledDataContainer isConnected={isConnected}>
|
||||||
<div>
|
<div>
|
||||||
{range(0, GRID_COUNT).map((y) => (
|
{range(0, GRID_COUNT).map((y) => (
|
||||||
@@ -304,6 +304,7 @@ function StreamDelayBox({ delayState, setStreamCensored }) {
|
|||||||
setStreamCensored(!delayState.isCensored)
|
setStreamCensored(!delayState.isCensored)
|
||||||
}, [delayState.isCensored, setStreamCensored])
|
}, [delayState.isCensored, setStreamCensored])
|
||||||
let buttonText
|
let buttonText
|
||||||
|
if (delayState.isConnected) {
|
||||||
if (delayState.state.matches('censorship.censored.deactivating')) {
|
if (delayState.state.matches('censorship.censored.deactivating')) {
|
||||||
buttonText = 'Deactivating...'
|
buttonText = 'Deactivating...'
|
||||||
} else if (delayState.isCensored) {
|
} else if (delayState.isCensored) {
|
||||||
@@ -311,14 +312,15 @@ function StreamDelayBox({ delayState, setStreamCensored }) {
|
|||||||
} else {
|
} else {
|
||||||
buttonText = 'Censor stream'
|
buttonText = 'Censor stream'
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<StyledStreamDelayBox>
|
<StyledStreamDelayBox>
|
||||||
<strong>Streamdelay</strong>
|
<strong>Streamdelay</strong>
|
||||||
<span>{delayState.isConnected ? 'connected' : 'connecting...'}</span>
|
<span>{delayState.isConnected ? 'connected' : 'connecting...'}</span>
|
||||||
{delayState.isConnected && (
|
{delayState.isConnected && (
|
||||||
|
<>
|
||||||
<span>delay: {delayState.delaySeconds}s</span>
|
<span>delay: {delayState.delaySeconds}s</span>
|
||||||
)}
|
|
||||||
<StyledToggleButton
|
<StyledToggleButton
|
||||||
isActive={delayState.isCensored}
|
isActive={delayState.isCensored}
|
||||||
onClick={handleToggleStreamCensored}
|
onClick={handleToggleStreamCensored}
|
||||||
@@ -326,6 +328,8 @@ function StreamDelayBox({ delayState, setStreamCensored }) {
|
|||||||
>
|
>
|
||||||
{buttonText}
|
{buttonText}
|
||||||
</StyledToggleButton>
|
</StyledToggleButton>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</StyledStreamDelayBox>
|
</StyledStreamDelayBox>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user