123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- /* eslint no-param-reassign: 0 */
- export default {
- namespaced: true,
- state: {
- video: {
- player: null,
- paused: true,
- playerReady: false,
- autoPlayed: false,
- currentTime: 0,
- playbackRate: 1
- },
- youtubeId: null,
- song: {},
- originalSong: {},
- reports: [],
- tab: "discogs",
- newSong: false
- },
- getters: {},
- actions: {
- init: ({ commit }, { song }) => commit("editSong", song),
- showTab: ({ commit }, tab) => commit("showTab", tab),
- editSong: ({ commit }, song) => commit("editSong", song),
- setSong: ({ commit }, song) => commit("setSong", song),
- updateOriginalSong: ({ commit }, song) =>
- commit("updateOriginalSong", song),
- resetSong: ({ commit }, youtubeId) => commit("resetSong", youtubeId),
- stopVideo: ({ commit }) => commit("stopVideo"),
- hardStopVideo: ({ commit }) => commit("hardStopVideo"),
- loadVideoById: ({ commit }, id, skipDuration) =>
- commit("loadVideoById", id, skipDuration),
- pauseVideo: ({ commit }, status) => commit("pauseVideo", status),
- getCurrentTime: ({ commit, state }, fixedVal) =>
- new Promise(resolve => {
- commit("getCurrentTime", fixedVal);
- resolve(state.video.currentTime);
- }),
- updateSongField: ({ commit }, data) => commit("updateSongField", data),
- selectDiscogsInfo: ({ commit }, discogsInfo) =>
- commit("selectDiscogsInfo", discogsInfo),
- updateReports: ({ commit }, reports) =>
- commit("updateReports", reports),
- resolveReport: ({ commit }, reportId) =>
- commit("resolveReport", reportId),
- updateYoutubeId: ({ commit }, youtubeId) => {
- commit("updateYoutubeId", youtubeId);
- commit("loadVideoById", youtubeId, 0);
- },
- updateTitle: ({ commit }, title) => commit("updateTitle", title),
- updateThumbnail: ({ commit }, thumbnail) =>
- commit("updateThumbnail", thumbnail),
- setPlaybackRate: ({ commit }, rate) => commit("setPlaybackRate", rate)
- },
- mutations: {
- showTab(state, tab) {
- state.tab = tab;
- },
- editSong(state, song) {
- state.newSong = !!song.newSong || !song._id;
- state.youtubeId = song.youtubeId || null;
- state.prefillData = song.prefill ? song.prefill : {};
- },
- setSong(state, song) {
- if (song.discogs === undefined) song.discogs = null;
- state.originalSong = JSON.parse(JSON.stringify(song));
- state.song = JSON.parse(JSON.stringify(song));
- state.newSong = !song._id;
- state.youtubeId = song.youtubeId;
- },
- updateOriginalSong(state, song) {
- state.originalSong = JSON.parse(JSON.stringify(song));
- },
- resetSong(state, youtubeId) {
- if (state.youtubeId === youtubeId) state.youtubeId = "";
- if (state.song && state.song.youtubeId === youtubeId)
- state.song = {};
- if (
- state.originalSong &&
- state.originalSong.youtubeId === youtubeId
- )
- state.originalSong = {};
- },
- stopVideo(state) {
- if (state.video.player && state.video.player.pauseVideo) {
- state.video.player.pauseVideo();
- state.video.player.seekTo(0);
- }
- },
- hardStopVideo(state) {
- if (state.video.player && state.video.player.stopVideo) {
- state.video.player.stopVideo();
- }
- },
- loadVideoById(state, id, skipDuration) {
- state.song.duration = -1;
- state.video.player.loadVideoById(id, skipDuration);
- },
- pauseVideo(state, status) {
- if (
- (state.video.player && state.video.player.pauseVideo) ||
- state.video.playVideo
- ) {
- 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;
- }
- );
- }
- },
- updateSongField(state, data) {
- state.song[data.field] = data.value;
- },
- selectDiscogsInfo(state, discogsInfo) {
- state.song.discogs = discogsInfo;
- },
- updateReports(state, reports) {
- state.reports = reports;
- },
- resolveReport(state, reportId) {
- state.reports = state.reports.filter(
- report => report._id !== reportId
- );
- },
- updateYoutubeId(state, youtubeId) {
- state.song.youtubeId = youtubeId;
- },
- updateTitle(state, title) {
- state.song.title = title;
- },
- updateThumbnail(state, thumbnail) {
- state.song.thumbnail = thumbnail;
- },
- setPlaybackRate(state, rate) {
- if (rate) {
- state.video.playbackRate = rate;
- state.video.player.setPlaybackRate(rate);
- } else if (
- state.video.player.getPlaybackRate() !== undefined &&
- state.video.playbackRate !==
- state.video.player.getPlaybackRate()
- ) {
- state.video.player.setPlaybackRate(state.video.playbackRate);
- state.video.playbackRate = state.video.player.getPlaybackRate();
- }
- }
- }
- };
|