| @ -1,31 +1,29 @@ | |||
| import React from "react"; | |||
| import { | |||
| STATE_OPENING, STATE_OPEN, STATE_CLOSING, STATE_CLOSED | |||
| } from "../constants/socket"; | |||
| import { SocketSliceState, SocketState } from "../modules/websocket/slice"; | |||
| type Props = { | |||
| state: number, | |||
| url: string, | |||
| }; | |||
| function socketStateToString(socket: SocketSliceState): string { | |||
| const { state, url } = socket; | |||
| switch (state) { | |||
| case SocketState.Opening: | |||
| return `connecting to ${url}`; | |||
| case SocketState.Open: | |||
| return `connected to ${url}`; | |||
| case SocketState.Closing: | |||
| return `disconnecting from ${url}`; | |||
| case SocketState.Closed: | |||
| return "disconnected"; | |||
| } | |||
| } | |||
| const SocketStatusPane: React.FC<Props> = ({ state, url }) => { | |||
| let string; | |||
| switch (state) { | |||
| case STATE_OPENING: | |||
| string = `connecting to ${url}`; | |||
| break; | |||
| case STATE_OPEN: | |||
| string = `connected to ${url}`; | |||
| break; | |||
| case STATE_CLOSING: | |||
| string = `disconnecting from ${url}`; | |||
| break; | |||
| case STATE_CLOSED: | |||
| string = `disconnected`; | |||
| break; | |||
| } | |||
| return <div id="socket-status-pane">Connection status: {string}</div>; | |||
| interface Props { | |||
| socket: SocketSliceState, | |||
| }; | |||
| const SocketStatusPane: React.FC<Props> = ({ socket }: Props) => ( | |||
| <div id="socket-status-pane"> | |||
| Connection status: {socketStateToString(socket)} | |||
| </div> | |||
| ); | |||
| export default SocketStatusPane; | |||