comunicconsole/src/ui/widgets/InitWidget.tsx
2021-05-12 18:16:15 +02:00

52 lines
1.0 KiB
TypeScript

/**
* Initialization widget
*
* @author Pierre Hubert
*/
import React from "react";
import { AccountHelper } from "../../helpers/AccountHelper";
import { LoginRoute } from "../routes/LoginRoute";
import { MainRoute } from "../routes/MainRoute";
import { AsyncWidget } from "./AsyncWidget";
interface InitWidgetState {
signedIn: boolean;
}
export class InitWidget extends React.Component<{}, InitWidgetState> {
constructor(props: any) {
super(props);
this.state = {
signedIn: false,
};
this.init = this.init.bind(this);
this.build = this.build.bind(this);
}
async init() {
this.setState({ signedIn: false });
if (AccountHelper.hasAccessToken) {
await AccountHelper.refreshCurrentAccountInfo();
this.setState({ signedIn: true });
}
}
render() {
return (
<AsyncWidget
errorMessage="Failed to initialize application!"
load={this.init}
onBuild={this.build}
></AsyncWidget>
);
}
build() {
return this.state.signedIn ? <MainRoute /> : <LoginRoute></LoginRoute>;
}
}