63 lines
1.2 KiB
JavaScript
63 lines
1.2 KiB
JavaScript
|
import { defineStore } from 'pinia';
|
||
|
import axios from 'axios';
|
||
|
|
||
|
export const MainService = defineStore('main', {
|
||
|
state: () => ({
|
||
|
/* User */
|
||
|
userName: '',
|
||
|
userEmail: null,
|
||
|
userAvatar: null,
|
||
|
|
||
|
/* Field focus with ctrl+k (to register only once) */
|
||
|
isFieldFocusRegistered: false,
|
||
|
|
||
|
/* Sample data for starting dashboard(commonly used) */
|
||
|
clients: [],
|
||
|
history: [],
|
||
|
authors: [],
|
||
|
datasets: []
|
||
|
}),
|
||
|
actions: {
|
||
|
// payload = authenticated user
|
||
|
setUser(payload) {
|
||
|
if (payload.name) {
|
||
|
this.userName = payload.name;
|
||
|
}
|
||
|
if (payload.email) {
|
||
|
this.userEmail = payload.email;
|
||
|
}
|
||
|
if (payload.avatar) {
|
||
|
this.userAvatar = payload.avatar;
|
||
|
}
|
||
|
},
|
||
|
|
||
|
fetch(sampleDataKey) {
|
||
|
// sampleDataKey= clients or history
|
||
|
axios
|
||
|
.get(`data-sources/${sampleDataKey}.json`)
|
||
|
.then((r) => {
|
||
|
if (r.data && r.data.data) {
|
||
|
this[sampleDataKey] = r.data.data;
|
||
|
}
|
||
|
})
|
||
|
.catch((error) => {
|
||
|
alert(error.message);
|
||
|
});
|
||
|
},
|
||
|
|
||
|
fetchApi(sampleDataKey) {
|
||
|
// sampleDataKey= clients or history
|
||
|
axios
|
||
|
.get(`api/${sampleDataKey}`)
|
||
|
.then((r) => {
|
||
|
if (r.data) {
|
||
|
this[sampleDataKey] = r.data;
|
||
|
}
|
||
|
})
|
||
|
.catch((error) => {
|
||
|
alert(error.message);
|
||
|
});
|
||
|
},
|
||
|
},
|
||
|
});
|