Add error handling
This commit is contained in:
parent
7ec967a08b
commit
9fbdd98bc6
@ -41,8 +41,11 @@ export default class PerudoApi {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private get<T = any>(url: string, getParameters?: Record<string, any>) {
|
private get<T extends ApiObject>(url: string, getParameters?: Record<string, any>): AxiosPromise<T> {
|
||||||
return axios.get(url).then((response: AxiosResponse<T>) => {
|
return axios.get(url).then((response: AxiosResponse<T>) => {
|
||||||
|
if (response?.data?.errors?.length > 0) {
|
||||||
|
throw response.data.errors?.join();
|
||||||
|
}
|
||||||
return response;
|
return response;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="home">
|
<div class="home">
|
||||||
|
<div v-if="error">
|
||||||
|
Errors: <br>
|
||||||
|
{{ error }}
|
||||||
|
</div>
|
||||||
<md-field>
|
<md-field>
|
||||||
<label>Name</label>
|
<label>Name</label>
|
||||||
<md-input v-model="name" :readonly="gameJoined"></md-input>
|
<md-input v-model="name" :readonly="gameJoined"></md-input>
|
||||||
@ -44,6 +48,7 @@ import {ApiObject, GameState, IsStartedObject, JoinCreateGameObject} from "@/obj
|
|||||||
})
|
})
|
||||||
export default class Home extends Vue {
|
export default class Home extends Vue {
|
||||||
private gameState: GameState = GameState.Setup;
|
private gameState: GameState = GameState.Setup;
|
||||||
|
private error: string | null = null;
|
||||||
|
|
||||||
private name: string = 'Bobby';
|
private name: string = 'Bobby';
|
||||||
private code: string = '';
|
private code: string = '';
|
||||||
@ -66,7 +71,9 @@ export default class Home extends Vue {
|
|||||||
this.owner = true;
|
this.owner = true;
|
||||||
|
|
||||||
this.gameState = GameState.Joined;
|
this.gameState = GameState.Joined;
|
||||||
});
|
}).catch((reason => {
|
||||||
|
this.error = reason;
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
private joinGame() {
|
private joinGame() {
|
||||||
@ -74,14 +81,18 @@ export default class Home extends Vue {
|
|||||||
this.playerId = response.player.id;
|
this.playerId = response.player.id;
|
||||||
|
|
||||||
this.gameState = GameState.Joined;
|
this.gameState = GameState.Joined;
|
||||||
})
|
}).catch((reason => {
|
||||||
|
this.error = reason;
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
private startGame() {
|
private startGame() {
|
||||||
if (this.playerId) {
|
if (this.playerId) {
|
||||||
PerudoApi.instance.startGame(this.playerId).then((response: ApiObject) => {
|
PerudoApi.instance.startGame(this.playerId).then((response: ApiObject) => {
|
||||||
this.gameState = GameState.Started;
|
this.gameState = GameState.Started;
|
||||||
})
|
}).catch((reason => {
|
||||||
|
this.error = reason;
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +102,9 @@ export default class Home extends Vue {
|
|||||||
if (response.started) {
|
if (response.started) {
|
||||||
this.gameState = GameState.Started;
|
this.gameState = GameState.Started;
|
||||||
}
|
}
|
||||||
});
|
}).catch((reason => {
|
||||||
|
this.error = reason;
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user