79 lines
2.3 KiB
JavaScript
79 lines
2.3 KiB
JavaScript
import axios from "axios";
|
|
|
|
//const api_base = "http://localhost:5000/api/v1"; // test1
|
|
const api_base = "http://localhost:17653/api/v1"; // test2 - mock
|
|
|
|
const LoadingStatus = Object.freeze({
|
|
Loaded: { loading: false, error: false },
|
|
Loading: { loading: true, error: false },
|
|
Error: { loading: false, error: true },
|
|
});
|
|
|
|
export default {
|
|
state: {
|
|
publicated: [],
|
|
available: [],
|
|
infobases: [],
|
|
loading_error: false,
|
|
is_loading: false,
|
|
},
|
|
mutations: {
|
|
setLoadingStatus(state, { loading, error }) {
|
|
state.is_loading = loading && !error;
|
|
state.loading_error = error;
|
|
},
|
|
setInfobases(state, infobases) {
|
|
state.infobases = infobases;
|
|
},
|
|
setInfobase(state, { name, infobase }) {
|
|
let idx = state.infobases.findindex((infobase) => name === infobase.name);
|
|
if (-1 === idx) return;
|
|
state.infobases[idx] = infobase;
|
|
},
|
|
setInfobaseURL(state, { name, url }) {
|
|
let infobase = state.infobases.find((infobase) => name === infobase.name);
|
|
if (infobase === undefined) return;
|
|
infobase.url = url;
|
|
},
|
|
setInfobasePublication(state, { name, publicated }) {
|
|
let infobase = state.infobases.find((infobase) => name === infobase.name);
|
|
if (infobase === undefined) return;
|
|
infobase.publicated = publicated;
|
|
},
|
|
},
|
|
actions: {
|
|
async fetchInfobases(ctx) {
|
|
ctx.commit("setLoadingStatus", LoadingStatus.Loading);
|
|
try {
|
|
const res = await axios.get(`${api_base}/infobases-all`);
|
|
if (!res) {
|
|
ctx.commit("setLoadingStatus", LoadingStatus.Error);
|
|
return;
|
|
}
|
|
const infobases = res.data;
|
|
if (!Array.isArray(infobases)) {
|
|
ctx.commit("setLoadingStatus", LoadingStatus.Error);
|
|
return;
|
|
}
|
|
ctx.commit("setInfobases", infobases);
|
|
ctx.commit("setLoadingStatus", LoadingStatus.Loaded);
|
|
} catch (err) {
|
|
ctx.commit("setLoadingStatus", LoadingStatus.Error);
|
|
}
|
|
},
|
|
},
|
|
getters: {
|
|
allInfobases(state) {
|
|
return state.infobases;
|
|
},
|
|
getInfobaseByName: (state) => (name) =>
|
|
state.infobases.find((infobase) => name === infobase.name),
|
|
isLoading(state) {
|
|
return state.is_loading;
|
|
},
|
|
isLoadingError(state) {
|
|
return state.loading_error;
|
|
},
|
|
},
|
|
};
|