ezpaarse-project/ezpaarse

View on GitHub
client/store/index.js

Summary

Maintainability
A
2 hrs
Test Coverage
// eslint-disable-next-line import/no-extraneous-dependencies
import Vue from 'vue';
import api from './api';

export default {
  state: () => ({
    appInfos: {
      version: '0.0.0',
      uptime: '0d 0h 0m 0s',
      demo: false
    },
    ezpaarse: {},
    platforms: {},
    platformsItems: [],
    platformsChanged: [],
    middlewares: {},
    middlewaresChanged: [],
    resources: {},
    drawer: null,
    feedback: '',
    users: [],
    userNumber: -1,
    pkbs: {}
  }),
  getters: {
    hasPlatformsUpdates (state) {
      return state.platforms['from-head'] === 'outdated';
    },
    hasMiddlewaresUpdates (state) {
      return state.middlewares['from-head'] === 'outdated';
    },
    hasGeneralUpdates (state) {
      if (state.middlewares['from-head'] === 'outdated') { return true; }
      if (state.resources['from-head'] === 'outdated') { return true; }
      if (state.ezpaarse[state.ezpaarse.isBeta ? 'from-head' : 'from-tag'] === 'outdated') { return true; }
      return false;
    }
  },
  actions: {
    SET_DRAWER ({ commit }, value) {
      commit('SET_DRAWER', value);
    },
    REGISTER (ctx, credentials) {
      return api.register(credentials);
    },
    RESTART (ctx, force) {
      return api.restart(force);
    },
    SEND_FEEDBACK (ctx, data) {
      return api.sendFeedback(data);
    },
    LOAD_STATUS ({ commit }) {
      return Promise.all([
        api.getAppStatus().then(res => {
          res.isBeta = !/^[0-9]+\.[0-9]+\.[0-9]+$/.test(res.current);
          commit('SET_APP_STATUS', res);
        }),
        api.getPlatformsStatus().then(res => commit('SET_PLATFORMS_STATUS', res)),
        api.getResourcesStatus().then(res => commit('SET_RESOURCES_STATUS', res)),
        api.getMiddlewaresStatus().then(res => commit('SET_MIDDLEWARES_STATUS', res))
      ]);
    },
    UPDATE_REPO (ctx, repo) {
      return api.updateRepo(repo);
    },
    UPDATE_APP (ctx, { version, socketId }) {
      return api.updateApp(version, socketId);
    },
    GET_PLATFORMS ({ commit }) {
      return api.getPlatforms().then(res => commit('SET_PLATFORMS', res));
    },
    GET_PLATFORMS_CHANGED ({ commit }) {
      return api.getPlatformsChanged().then(res => commit('SET_PLATFORMS_CHANGED', res));
    },
    GET_MIDDLEWARES_CHANGED ({ commit }) {
      return api.getMiddlewaresChanged().then(res => commit('SET_MIDDLEWARES_CHANGED', res));
    },
    GET_USERS_LIST ({ commit }) {
      return api.getUsersList().then(res => commit('SET_USERS_LIST', res));
    },
    ADD_USER (ctx, data) {
      return api.addUser(data);
    },
    REMOVE_USER (ctx, userid) {
      return api.removeUser(userid);
    },
    EDIT_USER (ctx, data) {
      return api.editUser(data);
    },
    RESET_PASSWORD (ctx, data) {
      return api.resetPassword(data);
    },
    SEND_NEW_PASSWORD (ctx, data) {
      return api.sendNewPassword(data);
    },
    NOTIFIATE (ctx, data) {
      return api.notifiate(data);
    },
    UPDATE_PASSWORD (ctx, data) {
      return api.updatePassword(data);
    },
    async GET_USER_NUMBER ({ commit }) {
      commit('SET_USER_NUMBER', await api.getUserNumber());
    },
    FRESHINSTALL (ctx, data) {
      return api.freshInstall(data);
    },
    async LOAD_PKBS ({ commit }) {
      commit('SET_PKBS', await api.loadPkbs());
    },
    SET_PKBS ({ commit }, data) {
      commit('SET_PKBS', data);
    },
    GET_APP_INFOS ({ commit }) {
      return api.getAppInfos().then(res => { commit('SET_APP_INFOS', res); });
    },
    GET_FEEDBACK_STATUS ({ commit }) {
      return api.feedbackStatus().then(res => commit('SET_FEEDBACK_STATUS', res));
    }
  },
  mutations: {
    SET_DRAWER (state, value) {
      Vue.set(state, 'drawer', value);
    },
    SET_FEEDBACK_STATUS (state, feedback) {
      Vue.set(state, 'feedback', feedback);
    },
    SET_APP_STATUS (state, data) {
      Vue.set(state, 'ezpaarse', data);
    },
    SET_PLATFORMS_STATUS (state, data) {
      Vue.set(state, 'platforms', data);
    },
    SET_RESOURCES_STATUS (state, data) {
      Vue.set(state, 'resources', data);
    },
    SET_MIDDLEWARES_STATUS (state, data) {
      Vue.set(state, 'middlewares', data);
    },
    SET_PLATFORMS (state, platforms) {
      Vue.set(state, 'platformsItems', platforms);
    },
    SET_PLATFORMS_CHANGED (state, platforms) {
      Vue.set(state, 'platformsChanged', platforms);
    },
    SET_MIDDLEWARES_CHANGED (state, middlewares) {
      Vue.set(state, 'middlewaresChanged', middlewares);
    },
    SET_USERS_LIST (state, users) {
      Vue.set(state, 'users', users);
    },
    SET_USER_NUMBER (state, userNumber) {
      Vue.set(state, 'userNumber', userNumber);
    },
    SET_PKBS (state, data) {
      Vue.set(state, 'pkbs', data);
    },
    SET_APP_INFOS (state, data) {
      Vue.set(state, 'appInfos', data);
    }
  }
};