| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 | /* eslint no-param-reassign: 0 */import Vue from "vue";const state = {};const getters = {};const actions = {};const mutations = {};const modules = {	songs: {		namespaced: true,		state: {			video: {				player: null,				paused: true,				playerReady: false,				autoPlayed: false,				currentTime: 0			},			editing: {},			songs: []		},		getters: {},		actions: {			editSong: ({ commit }, song) => commit("editSong", song),			stopVideo: ({ commit }) => commit("stopVideo"),			loadVideoById: ({ commit }, id, skipDuration) =>				commit("loadVideoById", id, skipDuration),			pauseVideo: ({ commit }, status) => commit("pauseVideo", status),			getCurrentTime: ({ commit, state }, fixedVal) => {				return new Promise(resolve => {					commit("getCurrentTime", fixedVal);					resolve(state.video.currentTime);				});			},			addSong: ({ commit }, song) => commit("addSong", song),			removeSong: ({ commit }, songId) => commit("removeSong", songId),			updateSong: ({ commit }, updatedSong) =>				commit("updateSong", updatedSong),			updateSongField: ({ commit }, data) =>				commit("updateSongField", data),			selectDiscogsInfo: ({ commit }, discogsInfo) =>				commit("selectDiscogsInfo", discogsInfo)		},		mutations: {			editSong(state, song) {				if (song.song.discogs === undefined) song.song.discogs = null;				state.editing = { ...song };			},			stopVideo(state) {				state.video.player.stopVideo();			},			loadVideoById(state, id, skipDuration) {				state.video.player.loadVideoById(id, skipDuration);			},			pauseVideo(state, status) {				if (status) state.video.player.pauseVideo();				else state.video.player.playVideo();				state.video.paused = status;			},			getCurrentTime(state, fixedVal) {				if (!state.playerReady) state.video.currentTime = 0;				else {					Promise.resolve(state.video.player.getCurrentTime()).then(						time => {							if (fixedVal)								Promise.resolve(time.toFixed(fixedVal)).then(									fixedTime => {										state.video.currentTime = fixedTime;									}								);							else state.video.currentTime = time;						}					);				}			},			addSong(state, song) {				state.songs.push(song);			},			removeSong(state, songId) {				state.songs = state.songs.filter(song => {					return song._id !== songId;				});			},			updateSong(state, updatedSong) {				state.songs.forEach((song, index) => {					if (song._id === updatedSong._id)						Vue.set(state.songs, index, updatedSong);				});			},			updateSongField(state, data) {				state.editing.song[data.field] = data.value;			},			selectDiscogsInfo(state, discogsInfo) {				state.editing.song.discogs = discogsInfo;			}		}	},	stations: {		namespaced: true,		state: {			station: {},			editing: {}		},		getters: {},		actions: {			editStation: ({ commit }, station) => commit("editStation", station)		},		mutations: {			editStation(state, station) {				state.station = station;				state.editing = JSON.parse(JSON.stringify(station));			}		}	},	reports: {		namespaced: true,		state: {			report: {}		},		getters: {},		actions: {			viewReport: ({ commit }, report) => commit("viewReport", report)		},		mutations: {			viewReport(state, report) {				state.report = report;			}		}	},	punishments: {		namespaced: true,		state: {			punishment: {}		},		getters: {},		actions: {			viewPunishment: ({ commit }, punishment) =>				commit("viewPunishment", punishment)		},		mutations: {			viewPunishment(state, punishment) {				state.punishment = punishment;			}		}	},	users: {		namespaced: true,		state: {			editing: {}		},		getters: {},		actions: {			editUser: ({ commit }, user) => commit("editUser", user)		},		mutations: {			editUser(state, user) {				state.editing = user;			}		}	},	news: {		namespaced: true,		state: {			editing: {}		},		getters: {},		actions: {			editNews: ({ commit }, news) => commit("editNews", news),			addChange: ({ commit }, data) => commit("addChange", data),			removeChange: ({ commit }, data) => commit("removeChange", data)		},		mutations: {			editNews(state, news) {				state.editing = news;			},			addChange(state, data) {				state.editing[data.type].push(data.change);			},			removeChange(state, data) {				state.editing[data.type].splice(data.index, 1);			}		}	}};export default {	namespaced: true,	state,	getters,	actions,	mutations,	modules};
 |