cloudcloud/audiofile

View on GitHub
src/store.js

Summary

Maintainability
A
3 hrs
Test Coverage
import Vue from 'vue';
import Vuex from 'vuex';
 
import apiClient from './api';
 
Vue.use(Vuex);
 
export default new Vuex.Store({
state: {
alerts: {},
artists: {},
settings: {
directories: {},
},
},
mutations: {
resetAlerts (state, alerts) {
state.alerts = alerts;
},
resetArtists (state, artists) {
state.artists = artists;
},
resetDirectories (state, directories) {
state.settings.directories = directories;
},
},
getters: {
allAlerts: state => {
return state.alerts;
},
allArtists: state => {
return state.artists;
},
allDirectories: state => {
return state.settings.directories;
},
},
actions: {
Similar blocks of code found in 2 locations. Consider refactoring.
getArtists({commit}) {
return new Promise((resolve) => {
apiClient.getArtists().then((data) => {
commit('resetArtists', data.items);
resolve();
});
});
},
Similar blocks of code found in 2 locations. Consider refactoring.
getDirectories({commit}) {
return new Promise((resolve) => {
apiClient.getDirectories().then((data) => {
commit('resetDirectories', data.items);
resolve();
});
});
},
pushDirectory({commit, state}, directory) {
const directories = { ...state.settings.directories, [directory.id]: directory };
 
return apiClient.pushDirectory(directory).then(() => {
commit('resetDirectories', directories);
});
},
removeDirectory({commit, state}, directory) {
const directories = state.settings.directories.splice(
state.settings.directories.indexOf(directory),
1
);
 
return apiClient.removeDirectory(directory).then(() => {
commit('resetDirectories', directories);
});
},
triggerTrawl({commit}) {
return new Promise((resolve) => {
apiClient.triggerTrawl().then((data) => {
commit('resetAlerts', {
trawlFailure: (data.meta.errors > 0 && data.items.length < 1),
trawlSuccess: (data.meta.errors == 0 && data.items.length > 0)
});
resolve();
});
});
},
updateArtist({commit, state}, artist) {
const artists = { ...state.artists, [artist.text]: artist};
 
return apiClient.updateArtist(artist).then(() => {
commit('resetArtists', artists)
});
}
}
});