move *_user_error
from advent22.ts
to store.ts
, fixing advent22Store.init
This commit is contained in:
parent
98ab638762
commit
c6e61d5d76
5 changed files with 66 additions and 64 deletions
|
@ -44,7 +44,7 @@ export default class extends Vue {
|
||||||
|
|
||||||
this.store
|
this.store
|
||||||
.login(creds)
|
.login(creds)
|
||||||
.catch(this.$advent22.alert_user_error)
|
.catch(this.store.alert_user_error)
|
||||||
.finally(() => (this.is_busy = false));
|
.finally(() => (this.is_busy = false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ export default class extends Vue {
|
||||||
this.multi_modal!.show_image(image_src, this.$advent22.name_door(day));
|
this.multi_modal!.show_image(image_src, this.$advent22.name_door(day));
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
this.$advent22.alert_user_error(error);
|
this.store.alert_user_error(error);
|
||||||
this.multi_modal!.hide();
|
this.multi_modal!.hide();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,6 +71,7 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { DoorSaved } from "@/lib/api";
|
import { DoorSaved } from "@/lib/api";
|
||||||
import { Door } from "@/lib/door";
|
import { Door } from "@/lib/door";
|
||||||
|
import { advent22Store } from "@/plugins/store";
|
||||||
import { Options, Vue } from "vue-class-component";
|
import { Options, Vue } from "vue-class-component";
|
||||||
|
|
||||||
import { toast } from "bulma-toast";
|
import { toast } from "bulma-toast";
|
||||||
|
@ -99,6 +100,7 @@ export default class extends Vue {
|
||||||
];
|
];
|
||||||
public current_step = 0;
|
public current_step = 0;
|
||||||
public doors: Door[] = [];
|
public doors: Door[] = [];
|
||||||
|
private readonly store = advent22Store();
|
||||||
|
|
||||||
public loading_doors = false;
|
public loading_doors = false;
|
||||||
public saving_doors = false;
|
public saving_doors = false;
|
||||||
|
@ -117,7 +119,7 @@ export default class extends Vue {
|
||||||
resolve();
|
resolve();
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
this.$advent22.alert_user_error(error);
|
this.store.alert_user_error(error);
|
||||||
reject();
|
reject();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -135,7 +137,7 @@ export default class extends Vue {
|
||||||
.api_put("admin/doors", data)
|
.api_put("admin/doors", data)
|
||||||
.then(resolve)
|
.then(resolve)
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
this.$advent22.alert_user_error(error);
|
this.store.alert_user_error(error);
|
||||||
reject();
|
reject();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import axios, { AxiosError, AxiosInstance, ResponseType } from "axios";
|
import axios, { AxiosInstance, ResponseType } from "axios";
|
||||||
import { toast } from "bulma-toast";
|
|
||||||
import { App, Plugin } from "vue";
|
import { App, Plugin } from "vue";
|
||||||
import { advent22Store } from "./store";
|
import { advent22Store } from "./store";
|
||||||
|
|
||||||
|
@ -29,62 +28,6 @@ export class Advent22 {
|
||||||
return `Türchen ${day}`;
|
return `Türchen ${day}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
public format_user_error([reason, endpoint]: [unknown, string]): string {
|
|
||||||
let msg =
|
|
||||||
"Unbekannter Fehler, bitte wiederholen! Besteht das Problem länger, bitte Admin benachrichtigen!";
|
|
||||||
let code = "U";
|
|
||||||
const result = () => `${msg} (Fehlercode: ${code}/${endpoint})`;
|
|
||||||
|
|
||||||
if (!(reason instanceof AxiosError)) return result();
|
|
||||||
|
|
||||||
switch (reason.code) {
|
|
||||||
case "ECONNABORTED":
|
|
||||||
// API unerreichbar
|
|
||||||
msg =
|
|
||||||
"API antwortet nicht, bitte später wiederholen! Besteht das Problem länger, bitte Admin benachrichtigen!";
|
|
||||||
code = "D";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "ERR_NETWORK":
|
|
||||||
// Netzwerk nicht verbunden
|
|
||||||
msg = "Sieht aus, als sei deine Netzwerkverbindung gestört.";
|
|
||||||
code = "N";
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
if (reason.response === undefined) return result();
|
|
||||||
|
|
||||||
switch (reason.response.status) {
|
|
||||||
case 401:
|
|
||||||
// UNAUTHORIZED
|
|
||||||
msg = "Netter Versuch :)";
|
|
||||||
code = "A";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 422:
|
|
||||||
// UNPROCESSABLE ENTITY
|
|
||||||
msg = "Funktion ist kaputt, bitte Admin benachrichtigen!";
|
|
||||||
code = "I";
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
// HTTP
|
|
||||||
code = `H${reason.response.status}`;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result();
|
|
||||||
}
|
|
||||||
|
|
||||||
public alert_user_error(param: [unknown, string]): void {
|
|
||||||
toast({
|
|
||||||
message: this.format_user_error(param),
|
|
||||||
type: "is-danger",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public api_url(): string;
|
public api_url(): string;
|
||||||
public api_url(endpoint: string): string;
|
public api_url(endpoint: string): string;
|
||||||
public api_url(endpoint?: string): string {
|
public api_url(endpoint?: string): string {
|
||||||
|
|
|
@ -2,7 +2,8 @@ import { Credentials, DoorSaved, SiteConfigModel } from "@/lib/api";
|
||||||
import { Door } from "@/lib/door";
|
import { Door } from "@/lib/door";
|
||||||
import { Advent22 } from "@/plugins/advent22";
|
import { Advent22 } from "@/plugins/advent22";
|
||||||
import { RemovableRef, useLocalStorage } from "@vueuse/core";
|
import { RemovableRef, useLocalStorage } from "@vueuse/core";
|
||||||
import { AxiosBasicCredentials } from "axios";
|
import { AxiosBasicCredentials, AxiosError } from "axios";
|
||||||
|
import { toast } from "bulma-toast";
|
||||||
import { acceptHMRUpdate, defineStore } from "pinia";
|
import { acceptHMRUpdate, defineStore } from "pinia";
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
|
@ -65,7 +66,63 @@ export const advent22Store = defineStore({
|
||||||
this.is_initialized = true;
|
this.is_initialized = true;
|
||||||
for (const callback of this.on_initialized) callback();
|
for (const callback of this.on_initialized) callback();
|
||||||
})
|
})
|
||||||
.catch(this.advent22.alert_user_error);
|
.catch(this.alert_user_error);
|
||||||
|
},
|
||||||
|
|
||||||
|
format_user_error([reason, endpoint]: [unknown, string]): string {
|
||||||
|
let msg =
|
||||||
|
"Unbekannter Fehler, bitte wiederholen! Besteht das Problem länger, bitte Admin benachrichtigen!";
|
||||||
|
let code = "U";
|
||||||
|
const result = () => `${msg} (Fehlercode: ${code}/${endpoint})`;
|
||||||
|
|
||||||
|
if (!(reason instanceof AxiosError)) return result();
|
||||||
|
|
||||||
|
switch (reason.code) {
|
||||||
|
case "ECONNABORTED":
|
||||||
|
// API unerreichbar
|
||||||
|
msg =
|
||||||
|
"API antwortet nicht, bitte später wiederholen! Besteht das Problem länger, bitte Admin benachrichtigen!";
|
||||||
|
code = "D";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "ERR_NETWORK":
|
||||||
|
// Netzwerk nicht verbunden
|
||||||
|
msg = "Sieht aus, als sei deine Netzwerkverbindung gestört.";
|
||||||
|
code = "N";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (reason.response === undefined) return result();
|
||||||
|
|
||||||
|
switch (reason.response.status) {
|
||||||
|
case 401:
|
||||||
|
// UNAUTHORIZED
|
||||||
|
msg = "Netter Versuch :)";
|
||||||
|
code = "A";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 422:
|
||||||
|
// UNPROCESSABLE ENTITY
|
||||||
|
msg = "Funktion ist kaputt, bitte Admin benachrichtigen!";
|
||||||
|
code = "I";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// HTTP
|
||||||
|
code = `H${reason.response.status}`;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result();
|
||||||
|
},
|
||||||
|
|
||||||
|
alert_user_error(param: [unknown, string]): void {
|
||||||
|
toast({
|
||||||
|
message: this.format_user_error(param),
|
||||||
|
type: "is-danger",
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
update(): Promise<void> {
|
update(): Promise<void> {
|
||||||
|
|
Loading…
Reference in a new issue