Path: blob/master/src/packages/frontend/app/connection-info.tsx
1496 views
/*1* This file is part of CoCalc: Copyright © 2020 Sagemath, Inc.2* License: MS-RSL – see LICENSE.md for details3*/45import { Modal } from "antd";6import { FormattedMessage, useIntl } from "react-intl";7import { Button, Col, Row } from "@cocalc/frontend/antd-bootstrap";8import {9React,10useActions,11useTypedRedux,12} from "@cocalc/frontend/app-framework";13import { Icon } from "@cocalc/frontend/components";14import { labels } from "@cocalc/frontend/i18n";15import { webapp_client } from "@cocalc/frontend/webapp-client";16import { ConnectionStatsDisplay } from "./connection-status";1718export const ConnectionInfo: React.FC = React.memo(() => {19const intl = useIntl();2021const ping = useTypedRedux("page", "ping");22const avgping = useTypedRedux("page", "avgping");23const status = useTypedRedux("page", "connection_status");24const page_actions = useActions("page");25const conat = useTypedRedux("page", "conat");26const hub = useTypedRedux("account", "hub");2728function close() {29page_actions.show_connection(false);30}3132return (33<Modal34width={700}35open36onCancel={close}37onOk={close}38title={39<div40style={{ display: "flex", alignItems: "center", marginRight: "30px" }}41>42<Icon name="wifi" style={{ marginRight: "1em" }} />{" "}43{intl.formatMessage(labels.connection)}44<div style={{ flex: 1 }} />45<Button46onClick={() => {47webapp_client.conat_client.reconnect();48}}49>50<Icon name="repeat" spin={status === "connecting"} />{" "}51{intl.formatMessage(labels.reconnect)}52</Button>53</div>54}55>56<div>57{conat != null && (58<Row>59<Col sm={12}>60{conat && (61<ConnectionStatsDisplay status={conat.toJS()} hub={hub} />62)}63</Col>64</Row>65)}66{ping ? (67<Row style={{ marginTop: "30px" }}>68<Col sm={3}>69<h5>70<FormattedMessage71id="connection-info.ping"72defaultMessage="Ping Time"73description={"Ping how long a server takes to respond"}74/>75</h5>76</Col>77<Col sm={7}>78<pre>79<FormattedMessage80id="connection-info.ping_info"81defaultMessage="{avgping}ms (latest: {ping}ms)"82description={83"Short string stating the average and the most recent ping in milliseconds."84}85values={{ avgping, ping }}86/>87</pre>88</Col>89</Row>90) : undefined}91</div>92</Modal>93);94});959697