update
This commit is contained in:
35
src/App.tsx
35
src/App.tsx
@@ -11,6 +11,8 @@ import {SERVER_BASE_NAME} from "./index";
|
||||
interface AppState {
|
||||
userContext: IUserContext;
|
||||
localeContext: ILocaleContext;
|
||||
loading: boolean;
|
||||
majorFailure: boolean;
|
||||
}
|
||||
|
||||
interface AppProps {}
|
||||
@@ -40,6 +42,8 @@ class App extends React.Component<AppProps, AppState> {
|
||||
};
|
||||
|
||||
this.state = {
|
||||
majorFailure: false,
|
||||
loading: true,
|
||||
userContext: {
|
||||
username: "",
|
||||
loggedIn: false,
|
||||
@@ -54,20 +58,35 @@ class App extends React.Component<AppProps, AppState> {
|
||||
}
|
||||
|
||||
componentDidMount(): void {
|
||||
axios.get("/api/user", {baseURL: SERVER_BASE_NAME})
|
||||
.then((res) => {
|
||||
const data = res.data as any;
|
||||
this.updateUserContext(data.username, true);
|
||||
this.changeLang(data.lang);
|
||||
})
|
||||
.catch(err => console.log(err));
|
||||
this.loadUserData();
|
||||
}
|
||||
|
||||
async loadUserData(): Promise<void> {
|
||||
try {
|
||||
const response = (await axios.get("/api/user", {baseURL: SERVER_BASE_NAME})).data;
|
||||
this.updateUserContext(response.username, true);
|
||||
this.changeLang(response.lang);
|
||||
}
|
||||
catch (e) {
|
||||
this.handleNoUserData();
|
||||
}
|
||||
finally {
|
||||
this.setState({loading: false});
|
||||
}
|
||||
}
|
||||
|
||||
handleNoUserData(): void {
|
||||
this.setState({majorFailure: true});
|
||||
}
|
||||
|
||||
render(): ReactNode {
|
||||
return (
|
||||
<LocaleContext.Provider value={this.state.localeContext}>
|
||||
<UserContext.Provider value={this.state.userContext}>
|
||||
<Game/>
|
||||
<Game
|
||||
loading={this.state.loading}
|
||||
majorFailure={this.state.majorFailure}
|
||||
/>
|
||||
</UserContext.Provider>
|
||||
</LocaleContext.Provider>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user