73 lines
1.9 KiB
JavaScript
73 lines
1.9 KiB
JavaScript
import { useAppStore } from '@/stores/app';
|
|
|
|
const debounceData = [];
|
|
|
|
export default {
|
|
data(){
|
|
return {
|
|
store: null,
|
|
}
|
|
},
|
|
created(){
|
|
this.store = useAppStore();
|
|
},
|
|
computed: {
|
|
user: {
|
|
get() {
|
|
return this.store.user;
|
|
},
|
|
set(value) {
|
|
this.store.user = value;
|
|
}
|
|
},
|
|
roles(){
|
|
let roles = {};
|
|
this.user && this.user.roles && this.user.roles.forEach(r=>{
|
|
roles[r] = true;
|
|
})
|
|
return roles;
|
|
},
|
|
},
|
|
methods: {
|
|
async loadUser() {
|
|
let response = await this.$api.user.load();
|
|
this.user = response.data.user;
|
|
return this.user;
|
|
},
|
|
getErrorText(error){
|
|
let msg = error?.response?.data?.error || error?.message;
|
|
if (msg){
|
|
if (typeof msg == 'object'){
|
|
return JSON.stringify(msg);
|
|
}else if (this.l.errors[msg]) {
|
|
return this.l.errors[msg]
|
|
}else {
|
|
return msg;
|
|
}
|
|
}else{
|
|
return error;
|
|
}
|
|
},
|
|
toast(text, color, timeout=3000){
|
|
this.store.snackbar.text = text;
|
|
this.store.snackbar.color = color;
|
|
this.store.snackbar.timeout = timeout;
|
|
this.store.snackbar.show = true;
|
|
},
|
|
debug(...args){
|
|
if (this.store?.prefs?.debug){
|
|
console.log(...args);
|
|
}
|
|
},
|
|
debounce(fn){
|
|
let f = debounceData.find(f=>f.fn == fn);
|
|
if (f){
|
|
clearTimeout(f.to);
|
|
}else{
|
|
f = {fn};
|
|
debounceData.push(f);
|
|
}
|
|
f.to = setTimeout(...arguments);
|
|
},
|
|
}
|
|
} |