|
@@ -536,6 +536,7 @@ import { mapState, mapGetters, mapActions } from "vuex";
|
|
|
import Toast from "toasters";
|
|
|
|
|
|
import aw from "@/aw";
|
|
|
+import ws from "@/ws";
|
|
|
import validation from "@/validation";
|
|
|
import keyboardShortcuts from "@/keyboardShortcuts";
|
|
|
|
|
@@ -667,191 +668,7 @@ export default {
|
|
|
|
|
|
this.useHTTPS = await lofig.get("cookie.secure");
|
|
|
|
|
|
- this.socket.dispatch(`songs.getSongFromSongId`, this.song._id, res => {
|
|
|
- if (res.status === "success") {
|
|
|
- const { song } = res.data;
|
|
|
- // this.song = { ...song };
|
|
|
- // if (this.song.discogs === undefined)
|
|
|
- // this.song.discogs = null;
|
|
|
- if (this.song.discogs)
|
|
|
- this.editSong({ ...song, discogs: this.song.discogs });
|
|
|
- else this.editSong(song);
|
|
|
-
|
|
|
- this.songDataLoaded = true;
|
|
|
-
|
|
|
- this.socket.dispatch(
|
|
|
- "apis.joinRoom",
|
|
|
- `edit-song.${this.song._id}`
|
|
|
- );
|
|
|
-
|
|
|
- // this.edit(res.data.song);
|
|
|
-
|
|
|
- this.interval = setInterval(() => {
|
|
|
- if (
|
|
|
- this.song.duration !== -1 &&
|
|
|
- this.video.paused === false &&
|
|
|
- this.playerReady &&
|
|
|
- (this.video.player.getCurrentTime() -
|
|
|
- this.song.skipDuration >
|
|
|
- this.song.duration ||
|
|
|
- (this.video.player.getCurrentTime() > 0 &&
|
|
|
- this.video.player.getCurrentTime() >=
|
|
|
- this.video.player.getDuration()))
|
|
|
- ) {
|
|
|
- this.video.paused = true;
|
|
|
- this.video.player.stopVideo();
|
|
|
- this.drawCanvas();
|
|
|
- }
|
|
|
- if (this.playerReady) {
|
|
|
- this.youtubeVideoCurrentTime = this.video.player
|
|
|
- .getCurrentTime()
|
|
|
- .toFixed(3);
|
|
|
- }
|
|
|
-
|
|
|
- if (this.video.paused === false) this.drawCanvas();
|
|
|
- }, 200);
|
|
|
-
|
|
|
- if (window.YT && window.YT.Player) {
|
|
|
- this.video.player = new window.YT.Player("editSongPlayer", {
|
|
|
- height: 270,
|
|
|
- width: 480,
|
|
|
- videoId: this.song.youtubeId,
|
|
|
- host: "https://www.youtube-nocookie.com",
|
|
|
- playerVars: {
|
|
|
- controls: 0,
|
|
|
- iv_load_policy: 3,
|
|
|
- rel: 0,
|
|
|
- showinfo: 0,
|
|
|
- autoplay: 0
|
|
|
- },
|
|
|
- startSeconds: this.song.skipDuration,
|
|
|
- events: {
|
|
|
- onReady: () => {
|
|
|
- let volume = parseInt(
|
|
|
- localStorage.getItem("volume")
|
|
|
- );
|
|
|
- volume =
|
|
|
- typeof volume === "number" ? volume : 20;
|
|
|
- this.video.player.setVolume(volume);
|
|
|
- if (volume > 0) this.video.player.unMute();
|
|
|
-
|
|
|
- const duration =
|
|
|
- this.video.player.getDuration();
|
|
|
-
|
|
|
- this.youtubeVideoDuration = duration.toFixed(3);
|
|
|
- this.youtubeVideoNote = "(~)";
|
|
|
- this.playerReady = true;
|
|
|
-
|
|
|
- this.drawCanvas();
|
|
|
- },
|
|
|
- onStateChange: event => {
|
|
|
- this.drawCanvas();
|
|
|
-
|
|
|
- let skipToLast10SecsPressed = false;
|
|
|
- if (
|
|
|
- event.data === 1 &&
|
|
|
- this.skipToLast10SecsPressed
|
|
|
- ) {
|
|
|
- this.skipToLast10SecsPressed = false;
|
|
|
- skipToLast10SecsPressed = true;
|
|
|
- }
|
|
|
-
|
|
|
- if (
|
|
|
- event.data === 1 &&
|
|
|
- !skipToLast10SecsPressed
|
|
|
- ) {
|
|
|
- this.video.paused = false;
|
|
|
- let youtubeDuration =
|
|
|
- this.video.player.getDuration();
|
|
|
- const newYoutubeVideoDuration =
|
|
|
- youtubeDuration.toFixed(3);
|
|
|
-
|
|
|
- const songDurationNumber = Number(
|
|
|
- this.song.duration
|
|
|
- );
|
|
|
- const songDurationNumber2 =
|
|
|
- Number(this.song.duration) + 1;
|
|
|
- const songDurationNumber3 =
|
|
|
- Number(this.song.duration) - 1;
|
|
|
- const fixedSongDuration =
|
|
|
- songDurationNumber.toFixed(3);
|
|
|
- const fixedSongDuration2 =
|
|
|
- songDurationNumber2.toFixed(3);
|
|
|
- const fixedSongDuration3 =
|
|
|
- songDurationNumber3.toFixed(3);
|
|
|
-
|
|
|
- if (
|
|
|
- this.youtubeVideoDuration !==
|
|
|
- newYoutubeVideoDuration &&
|
|
|
- (fixedSongDuration ===
|
|
|
- this.youtubeVideoDuration ||
|
|
|
- fixedSongDuration2 ===
|
|
|
- this.youtubeVideoDuration ||
|
|
|
- fixedSongDuration3 ===
|
|
|
- this.youtubeVideoDuration)
|
|
|
- )
|
|
|
- this.song.duration =
|
|
|
- newYoutubeVideoDuration;
|
|
|
-
|
|
|
- this.youtubeVideoDuration =
|
|
|
- newYoutubeVideoDuration;
|
|
|
- this.youtubeVideoNote = "";
|
|
|
-
|
|
|
- if (this.song.duration === -1)
|
|
|
- this.song.duration = youtubeDuration;
|
|
|
-
|
|
|
- youtubeDuration -= this.song.skipDuration;
|
|
|
- if (
|
|
|
- this.song.duration >
|
|
|
- youtubeDuration + 1
|
|
|
- ) {
|
|
|
- this.video.player.stopVideo();
|
|
|
- this.video.paused = true;
|
|
|
- return new Toast(
|
|
|
- "Video can't play. Specified duration is bigger than the YouTube song duration."
|
|
|
- );
|
|
|
- }
|
|
|
- if (this.song.duration <= 0) {
|
|
|
- this.video.player.stopVideo();
|
|
|
- this.video.paused = true;
|
|
|
- return new Toast(
|
|
|
- "Video can't play. Specified duration has to be more than 0 seconds."
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- if (
|
|
|
- this.video.player.getCurrentTime() <
|
|
|
- this.song.skipDuration
|
|
|
- ) {
|
|
|
- return this.video.player.seekTo(
|
|
|
- this.song.skipDuration
|
|
|
- );
|
|
|
- }
|
|
|
- } else if (event.data === 2) {
|
|
|
- this.video.paused = true;
|
|
|
- }
|
|
|
-
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- } else {
|
|
|
- this.youtubeError = true;
|
|
|
- this.youtubeErrorMessage = "Player could not be loaded.";
|
|
|
- }
|
|
|
- } else {
|
|
|
- new Toast("Song with that ID not found");
|
|
|
- this.closeModal("editSong");
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- this.socket.dispatch(
|
|
|
- "reports.getReportsForSong",
|
|
|
- this.song._id,
|
|
|
- res => {
|
|
|
- this.updateReports(res.data.reports);
|
|
|
- }
|
|
|
- );
|
|
|
+ ws.onConnect(this.init);
|
|
|
|
|
|
let volume = parseFloat(localStorage.getItem("volume"));
|
|
|
volume =
|
|
@@ -885,6 +702,7 @@ export default {
|
|
|
},
|
|
|
{ modal: "editSong" }
|
|
|
);
|
|
|
+
|
|
|
keyboardShortcuts.registerShortcut("editSong.pauseResumeVideo", {
|
|
|
keyCode: 101,
|
|
|
preventDefault: true,
|
|
@@ -1077,6 +895,221 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
methods: {
|
|
|
+ init() {
|
|
|
+ this.socket.dispatch(
|
|
|
+ `songs.getSongFromSongId`,
|
|
|
+ this.song._id,
|
|
|
+ res => {
|
|
|
+ if (res.status === "success") {
|
|
|
+ const { song } = res.data;
|
|
|
+ // this.song = { ...song };
|
|
|
+ // if (this.song.discogs === undefined)
|
|
|
+ // this.song.discogs = null;
|
|
|
+ if (this.song.discogs)
|
|
|
+ this.editSong({
|
|
|
+ ...song,
|
|
|
+ discogs: this.song.discogs
|
|
|
+ });
|
|
|
+ else this.editSong(song);
|
|
|
+
|
|
|
+ this.songDataLoaded = true;
|
|
|
+
|
|
|
+ this.socket.dispatch(
|
|
|
+ "apis.joinRoom",
|
|
|
+ `edit-song.${this.song._id}`
|
|
|
+ );
|
|
|
+
|
|
|
+ // this.edit(res.data.song);
|
|
|
+
|
|
|
+ this.interval = setInterval(() => {
|
|
|
+ if (
|
|
|
+ this.song.duration !== -1 &&
|
|
|
+ this.video.paused === false &&
|
|
|
+ this.playerReady &&
|
|
|
+ (this.video.player.getCurrentTime() -
|
|
|
+ this.song.skipDuration >
|
|
|
+ this.song.duration ||
|
|
|
+ (this.video.player.getCurrentTime() > 0 &&
|
|
|
+ this.video.player.getCurrentTime() >=
|
|
|
+ this.video.player.getDuration()))
|
|
|
+ ) {
|
|
|
+ this.video.paused = true;
|
|
|
+ this.video.player.stopVideo();
|
|
|
+ this.drawCanvas();
|
|
|
+ }
|
|
|
+ if (this.playerReady) {
|
|
|
+ this.youtubeVideoCurrentTime = this.video.player
|
|
|
+ .getCurrentTime()
|
|
|
+ .toFixed(3);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.video.paused === false) this.drawCanvas();
|
|
|
+ }, 200);
|
|
|
+
|
|
|
+ if (window.YT && window.YT.Player) {
|
|
|
+ this.video.player = new window.YT.Player(
|
|
|
+ "editSongPlayer",
|
|
|
+ {
|
|
|
+ height: 270,
|
|
|
+ width: 480,
|
|
|
+ videoId: this.song.youtubeId,
|
|
|
+ host: "https://www.youtube-nocookie.com",
|
|
|
+ playerVars: {
|
|
|
+ controls: 0,
|
|
|
+ iv_load_policy: 3,
|
|
|
+ rel: 0,
|
|
|
+ showinfo: 0,
|
|
|
+ autoplay: 0
|
|
|
+ },
|
|
|
+ startSeconds: this.song.skipDuration,
|
|
|
+ events: {
|
|
|
+ onReady: () => {
|
|
|
+ let volume = parseInt(
|
|
|
+ localStorage.getItem("volume")
|
|
|
+ );
|
|
|
+ volume =
|
|
|
+ typeof volume === "number"
|
|
|
+ ? volume
|
|
|
+ : 20;
|
|
|
+ this.video.player.setVolume(volume);
|
|
|
+ if (volume > 0)
|
|
|
+ this.video.player.unMute();
|
|
|
+
|
|
|
+ const duration =
|
|
|
+ this.video.player.getDuration();
|
|
|
+
|
|
|
+ this.youtubeVideoDuration =
|
|
|
+ duration.toFixed(3);
|
|
|
+ this.youtubeVideoNote = "(~)";
|
|
|
+ this.playerReady = true;
|
|
|
+
|
|
|
+ this.drawCanvas();
|
|
|
+ },
|
|
|
+ onStateChange: event => {
|
|
|
+ this.drawCanvas();
|
|
|
+
|
|
|
+ let skipToLast10SecsPressed = false;
|
|
|
+ if (
|
|
|
+ event.data === 1 &&
|
|
|
+ this.skipToLast10SecsPressed
|
|
|
+ ) {
|
|
|
+ this.skipToLast10SecsPressed = false;
|
|
|
+ skipToLast10SecsPressed = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (
|
|
|
+ event.data === 1 &&
|
|
|
+ !skipToLast10SecsPressed
|
|
|
+ ) {
|
|
|
+ this.video.paused = false;
|
|
|
+ let youtubeDuration =
|
|
|
+ this.video.player.getDuration();
|
|
|
+ const newYoutubeVideoDuration =
|
|
|
+ youtubeDuration.toFixed(3);
|
|
|
+
|
|
|
+ const songDurationNumber =
|
|
|
+ Number(this.song.duration);
|
|
|
+ const songDurationNumber2 =
|
|
|
+ Number(this.song.duration) +
|
|
|
+ 1;
|
|
|
+ const songDurationNumber3 =
|
|
|
+ Number(this.song.duration) -
|
|
|
+ 1;
|
|
|
+ const fixedSongDuration =
|
|
|
+ songDurationNumber.toFixed(
|
|
|
+ 3
|
|
|
+ );
|
|
|
+ const fixedSongDuration2 =
|
|
|
+ songDurationNumber2.toFixed(
|
|
|
+ 3
|
|
|
+ );
|
|
|
+ const fixedSongDuration3 =
|
|
|
+ songDurationNumber3.toFixed(
|
|
|
+ 3
|
|
|
+ );
|
|
|
+
|
|
|
+ if (
|
|
|
+ this
|
|
|
+ .youtubeVideoDuration !==
|
|
|
+ newYoutubeVideoDuration &&
|
|
|
+ (fixedSongDuration ===
|
|
|
+ this
|
|
|
+ .youtubeVideoDuration ||
|
|
|
+ fixedSongDuration2 ===
|
|
|
+ this
|
|
|
+ .youtubeVideoDuration ||
|
|
|
+ fixedSongDuration3 ===
|
|
|
+ this
|
|
|
+ .youtubeVideoDuration)
|
|
|
+ )
|
|
|
+ this.song.duration =
|
|
|
+ newYoutubeVideoDuration;
|
|
|
+
|
|
|
+ this.youtubeVideoDuration =
|
|
|
+ newYoutubeVideoDuration;
|
|
|
+ this.youtubeVideoNote = "";
|
|
|
+
|
|
|
+ if (this.song.duration === -1)
|
|
|
+ this.song.duration =
|
|
|
+ youtubeDuration;
|
|
|
+
|
|
|
+ youtubeDuration -=
|
|
|
+ this.song.skipDuration;
|
|
|
+ if (
|
|
|
+ this.song.duration >
|
|
|
+ youtubeDuration + 1
|
|
|
+ ) {
|
|
|
+ this.video.player.stopVideo();
|
|
|
+ this.video.paused = true;
|
|
|
+ return new Toast(
|
|
|
+ "Video can't play. Specified duration is bigger than the YouTube song duration."
|
|
|
+ );
|
|
|
+ }
|
|
|
+ if (this.song.duration <= 0) {
|
|
|
+ this.video.player.stopVideo();
|
|
|
+ this.video.paused = true;
|
|
|
+ return new Toast(
|
|
|
+ "Video can't play. Specified duration has to be more than 0 seconds."
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ if (
|
|
|
+ this.video.player.getCurrentTime() <
|
|
|
+ this.song.skipDuration
|
|
|
+ ) {
|
|
|
+ return this.video.player.seekTo(
|
|
|
+ this.song.skipDuration
|
|
|
+ );
|
|
|
+ }
|
|
|
+ } else if (event.data === 2) {
|
|
|
+ this.video.paused = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ this.youtubeError = true;
|
|
|
+ this.youtubeErrorMessage =
|
|
|
+ "Player could not be loaded.";
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ new Toast("Song with that ID not found");
|
|
|
+ this.closeModal("editSong");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ this.socket.dispatch(
|
|
|
+ "reports.getReportsForSong",
|
|
|
+ this.song._id,
|
|
|
+ res => {
|
|
|
+ this.updateReports(res.data.reports);
|
|
|
+ }
|
|
|
+ );
|
|
|
+ },
|
|
|
stopEditingSongs() {
|
|
|
this.updateEditingSongs(false);
|
|
|
this.closeModal("editSong");
|