Files
pronature-platform/src/mixins/GlobalMixin.js
T

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);
},
}
}