Add refresh button on DevicesPage

This commit is contained in:
Alex Mikhalev 2019-07-19 23:22:42 -06:00
parent 9ef81b015b
commit 23527dd817
3 changed files with 33 additions and 20 deletions

View File

@ -1,11 +1,15 @@
import { observer } from "mobx-react";
import * as React from "react";
import { Item } from "semantic-ui-react";
import { Item, Button } from "semantic-ui-react";
import { DeviceView } from "@client/components";
import { AppState, injectState } from "@client/state";
class DevicesPage extends React.Component<{ appState: AppState }> {
refreshDevices = () => {
this.props.appState.sprinklersRpc.doAuthenticate();
}
render() {
const { appState } = this.props;
const { userData } = appState.userStore;
@ -21,7 +25,7 @@ class DevicesPage extends React.Component<{ appState: AppState }> {
}
return (
<React.Fragment>
<h1>Devices</h1>
<h1 className="devices-header">Devices <Button icon="refresh" onClick={this.refreshDevices}></Button></h1>
<Item.Group>{deviceNodes}</Item.Group>
</React.Fragment>
);

View File

@ -132,27 +132,29 @@ export class WebSocketRpcClient extends s.SprinklersRPC {
() =>
this.connectionState.clientToServer === true &&
this.tokenStore.accessToken.isValid,
async () => {
try {
const res = await this.authenticate(
this.tokenStore.accessToken.token!
);
runInAction("authenticateSuccess", () => {
this.authenticated = res.authenticated;
});
logger.info({ user: res.user }, "authenticated websocket connection");
this.emit("newUserData", res.user);
} catch (err) {
logger.error({ err }, "error authenticating websocket connection");
// TODO message?
runInAction("authenticateError", () => {
this.authenticated = false;
});
}
}
async () => { this.doAuthenticate() }
);
}
async doAuthenticate() {
try {
const res = await this.authenticate(
this.tokenStore.accessToken.token!
);
runInAction("authenticateSuccess", () => {
this.authenticated = res.authenticated;
});
logger.info({ user: res.user }, "authenticated websocket connection");
this.emit("newUserData", res.user);
} catch (err) {
logger.error({ err }, "error authenticating websocket connection");
// TODO message?
runInAction("authenticateError", () => {
this.authenticated = false;
});
}
}
// args must all be JSON serializable
async makeDeviceCall(
deviceId: string,

View File

@ -1,3 +1,10 @@
.devices-header {
display: flex;
.ui.icon.button {
margin-left: 0.5em;
}
}
.device {
.header {
display: flex !important;