put store.api_creds into localStorage

- don't need beforeunload in AdminView anymore
This commit is contained in:
Jörn-Michael Miehe 2023-11-09 18:19:48 +00:00
parent 2cf6936139
commit 3da3f7f639
4 changed files with 39 additions and 17 deletions

View file

@ -26,6 +26,7 @@
"@vue/cli-service": "~5.0.0",
"@vue/eslint-config-typescript": "^12.0.0",
"@vue/test-utils": "^2.4.1",
"@vueuse/core": "^10.5.0",
"axios": "^1.5.0",
"bulma": "^0.9.4",
"bulma-prefers-dark": "^0.1.0-beta.1",

View file

@ -18,16 +18,5 @@ import DoorMapEditor from "./DoorMapEditor.vue";
DoorMapEditor,
},
})
export default class extends Vue {
private old_handler = window.onbeforeunload;
private confirm_handler = () => "";
public mounted(): void {
window.onbeforeunload = this.confirm_handler;
}
public beforeUnmount(): void {
window.onbeforeunload = this.old_handler;
}
}
export default class extends Vue {}
</script>

View file

@ -1,5 +1,6 @@
import { Credentials, DoorsSaved, SiteConfigModel } from "@/lib/api";
import { Advent22 } from "@/plugins/advent22";
import { useLocalStorage } from "@vueuse/core";
import { AxiosBasicCredentials } from "axios";
import { acceptHMRUpdate, defineStore } from "pinia";
@ -14,7 +15,7 @@ export const advent22Store = defineStore({
state: () => ({
advent22: {} as Advent22,
api_creds: ["", ""] as Credentials,
api_creds: useLocalStorage<Credentials>("advent22/auth", ["", ""]),
is_touch_device:
window.matchMedia("(any-hover: none)").matches ||
"ontouchstart" in window ||
@ -42,6 +43,7 @@ export const advent22Store = defineStore({
actions: {
init(advent22: Advent22): void {
this.advent22 = advent22;
this.update_is_admin();
advent22
.api_get_blob("user/favicon")
@ -78,9 +80,7 @@ export const advent22Store = defineStore({
.catch(advent22.alert_user_error);
},
login(creds: Credentials): Promise<boolean> {
this.api_creds = creds;
update_is_admin(): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
this.advent22
.api_get<boolean>("admin/is_admin")
@ -92,6 +92,11 @@ export const advent22Store = defineStore({
});
},
login(creds: Credentials): Promise<boolean> {
this.api_creds = creds;
return this.update_is_admin();
},
logout(): Promise<boolean> {
return this.login(["", ""]);
},

View file

@ -1427,6 +1427,11 @@
dependencies:
"@types/node" "*"
"@types/web-bluetooth@^0.0.18":
version "0.0.18"
resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.18.tgz#74bd1c8fd3a2058cb6fc76b188fcded50a83d866"
integrity sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw==
"@types/webpack-env@^1.15.2":
version "1.18.1"
resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.1.tgz#49699bb508961e14a3bfb68c78cd87b296889d1d"
@ -1940,6 +1945,28 @@
resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a"
integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==
"@vueuse/core@^10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.5.0.tgz#04d1e6d26592bb997bb755a4830ea7583c3e8612"
integrity sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A==
dependencies:
"@types/web-bluetooth" "^0.0.18"
"@vueuse/metadata" "10.5.0"
"@vueuse/shared" "10.5.0"
vue-demi ">=0.14.6"
"@vueuse/metadata@10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.5.0.tgz#7501a88cf5cbf7a515a03f0b8bbe3cecf30cad11"
integrity sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw==
"@vueuse/shared@10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.5.0.tgz#b3ac8c190a5dae41db5e1b60fe304a9b4247393c"
integrity sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg==
dependencies:
vue-demi ">=0.14.6"
"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5":
version "1.11.6"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24"
@ -6848,7 +6875,7 @@ vue-component-type-helpers@1.8.4:
resolved "https://registry.yarnpkg.com/vue-component-type-helpers/-/vue-component-type-helpers-1.8.4.tgz#302d85fac912519cdf0dd2fb51402e5215d85628"
integrity sha512-6bnLkn8O0JJyiFSIF0EfCogzeqNXpnjJ0vW/SZzNHfe6sPx30lTtTXlE5TFs2qhJlAtDFybStVNpL73cPe3OMQ==
vue-demi@>=0.14.5:
vue-demi@>=0.14.5, vue-demi@>=0.14.6:
version "0.14.6"
resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92"
integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==