From e7d78df2e9131d2ba07cd5e30f94f85e3014063a Mon Sep 17 00:00:00 2001 From: Sebastien Date: Tue, 6 Mar 2018 17:19:46 +0100 Subject: [PATCH] Adding autoflow button --- .../Broken/RestApi/Commands/AutoFlowOff.java | 2 +- .../net/Broken/RestApi/Commands/AutoFlowOn.java | 2 +- .../Broken/RestApi/Data/CurrentMusicData.java | 8 +++++++- .../Broken/RestApi/MusicWebAPIController.java | 8 ++++---- .../java/net/Broken/audio/TrackScheduler.java | 15 ++++++++------- .../net/Broken/audio/Youtube/Authorization.java | 1 - src/main/resources/static/js/music.js | 14 +++++++++++++- src/main/resources/templates/music.html | 17 ++++++++++++++--- 8 files changed, 48 insertions(+), 19 deletions(-) diff --git a/src/main/java/net/Broken/RestApi/Commands/AutoFlowOff.java b/src/main/java/net/Broken/RestApi/Commands/AutoFlowOff.java index 5ba1a30..df55aa3 100644 --- a/src/main/java/net/Broken/RestApi/Commands/AutoFlowOff.java +++ b/src/main/java/net/Broken/RestApi/Commands/AutoFlowOff.java @@ -20,7 +20,7 @@ public class AutoFlowOff implements CommandInterface{ AudioM audioM = AudioM.getInstance(null); try { TrackScheduler scheduler = audioM.getGuildMusicManager().scheduler; - scheduler.setAutoPlay(false); + scheduler.setAutoFlow(false); return new ResponseEntity<>(new CommandResponseData(data.command,"ok"), HttpStatus.OK); } catch (NullMusicManager | NotConnectedException nullMusicManager) { LogManager.getLogger().catching(nullMusicManager); diff --git a/src/main/java/net/Broken/RestApi/Commands/AutoFlowOn.java b/src/main/java/net/Broken/RestApi/Commands/AutoFlowOn.java index 4579d15..001e259 100644 --- a/src/main/java/net/Broken/RestApi/Commands/AutoFlowOn.java +++ b/src/main/java/net/Broken/RestApi/Commands/AutoFlowOn.java @@ -20,7 +20,7 @@ public class AutoFlowOn implements CommandInterface{ AudioM audioM = AudioM.getInstance(null); try { TrackScheduler scheduler = audioM.getGuildMusicManager().scheduler; - scheduler.setAutoPlay(true); + scheduler.setAutoFlow(true); return new ResponseEntity<>(new CommandResponseData(data.command,"ok"), HttpStatus.OK); } catch (NullMusicManager | NotConnectedException nullMusicManager) { LogManager.getLogger().catching(nullMusicManager); diff --git a/src/main/java/net/Broken/RestApi/Data/CurrentMusicData.java b/src/main/java/net/Broken/RestApi/Data/CurrentMusicData.java index 9085374..1c77961 100644 --- a/src/main/java/net/Broken/RestApi/Data/CurrentMusicData.java +++ b/src/main/java/net/Broken/RestApi/Data/CurrentMusicData.java @@ -14,13 +14,15 @@ public class CurrentMusicData { private final long currentPos; private final String state; private final boolean pause; + private final boolean autoflow; - public CurrentMusicData(UserAudioTrackData info, long currentPos, String state, boolean pause) { + public CurrentMusicData(UserAudioTrackData info, long currentPos, String state, boolean pause, boolean autoflow) { this.info = info; this.currentPos = currentPos; this.state = state; this.pause = pause; + this.autoflow = autoflow; } public UserAudioTrackData getInfo() { @@ -37,4 +39,8 @@ public class CurrentMusicData { else return state; } + + public boolean isAutoflow() { + return autoflow; + } } diff --git a/src/main/java/net/Broken/RestApi/MusicWebAPIController.java b/src/main/java/net/Broken/RestApi/MusicWebAPIController.java index 4b35b96..056457d 100644 --- a/src/main/java/net/Broken/RestApi/MusicWebAPIController.java +++ b/src/main/java/net/Broken/RestApi/MusicWebAPIController.java @@ -51,16 +51,16 @@ public class MusicWebAPIController { AudioTrack currentTrack = player.getPlayingTrack(); if(currentTrack == null) { - return new CurrentMusicData(null,0, "STOP",false); + return new CurrentMusicData(null,0, "STOP",false, musicCommande.audio.getGuildMusicManager().scheduler.isAutoFlow()); } UserAudioTrackData uat = new UserAudioTrackData(musicCommande.audio.getGuildMusicManager().scheduler.getCurrentPlayingTrack()); - return new CurrentMusicData(uat, currentTrack.getPosition(), currentTrack.getState().toString(), player.isPaused()); + return new CurrentMusicData(uat, currentTrack.getPosition(), currentTrack.getState().toString(), player.isPaused(), musicCommande.audio.getGuildMusicManager().scheduler.isAutoFlow()); } catch (NullMusicManager | NotConnectedException nullMusicManager) { - return new CurrentMusicData(null,0, "STOP",false); + return new CurrentMusicData(null,0, "STOP",false, false); } }else { - return new CurrentMusicData(null,0, "DISCONNECTED",false); + return new CurrentMusicData(null,0, "DISCONNECTED",false, false); } } diff --git a/src/main/java/net/Broken/audio/TrackScheduler.java b/src/main/java/net/Broken/audio/TrackScheduler.java index 8cba94c..30712b4 100644 --- a/src/main/java/net/Broken/audio/TrackScheduler.java +++ b/src/main/java/net/Broken/audio/TrackScheduler.java @@ -2,19 +2,16 @@ package net.Broken.audio; import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.sedmelluq.discord.lavaplayer.player.AudioPlayer; -import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager; import com.sedmelluq.discord.lavaplayer.player.event.AudioEventAdapter; import com.sedmelluq.discord.lavaplayer.track.AudioTrack; import com.sedmelluq.discord.lavaplayer.track.AudioTrackEndReason; import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo; -import net.Broken.Commands.Music; import net.Broken.MainBot; import net.Broken.RestApi.Data.UserAudioTrackData; import net.Broken.audio.Youtube.YoutubeTools; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.concurrent.BlockingDeque; @@ -27,7 +24,7 @@ public class TrackScheduler extends AudioEventAdapter { private final AudioPlayer player; private final BlockingDeque queue; private UserAudioTrack currentPlayingTrack; - private boolean autoPlay = true; + private boolean autoFlow = true; private ArrayList history = new ArrayList<>(); Logger logger = LogManager.getLogger(); @@ -175,7 +172,7 @@ public class TrackScheduler extends AudioEventAdapter { } private void needAutoPlay(){ - if((queue.size() < 1) && autoPlay && currentPlayingTrack != null){ + if((queue.size() < 1) && autoFlow && currentPlayingTrack != null){ logger.info("Auto add needed!"); AudioM audioM = AudioM.getInstance(null); YoutubeTools youtubeTools = YoutubeTools.getInstance(null); @@ -193,8 +190,12 @@ public class TrackScheduler extends AudioEventAdapter { } } - public void setAutoPlay(boolean autoPlay) { - this.autoPlay = autoPlay; + public void setAutoFlow(boolean autoFlow) { + this.autoFlow = autoFlow; needAutoPlay(); } + + public boolean isAutoFlow() { + return autoFlow; + } } diff --git a/src/main/java/net/Broken/audio/Youtube/Authorization.java b/src/main/java/net/Broken/audio/Youtube/Authorization.java index 8d772df..3d7f6f1 100644 --- a/src/main/java/net/Broken/audio/Youtube/Authorization.java +++ b/src/main/java/net/Broken/audio/Youtube/Authorization.java @@ -33,7 +33,6 @@ public class Authorization extends AuthorizationCodeInstalledApp { protected void notify(String url){ Preconditions.checkNotNull(url); - // Ask user to open in their browser using copy-paste logger.fatal("Please open this URL: "+url); PrivateMessage.send(guild.getOwner().getUser(),"Please open this url to confirm google api account acces : " + url,null); diff --git a/src/main/resources/static/js/music.js b/src/main/resources/static/js/music.js index 6b56f6d..2846513 100644 --- a/src/main/resources/static/js/music.js +++ b/src/main/resources/static/js/music.js @@ -10,6 +10,7 @@ var btn_info; var btn_disconnect; var btn_flush; var btn_add; +var switchAutoFlow; var loadingFlag = false; $(document).ready(function() { @@ -21,7 +22,7 @@ $(document).ready(function() { btn_disconnect = $('#btn_disconnect'); btn_flush = $('#flush_btn'); btn_add = $('#add_btn'); - + switchAutoFlow = $("#autoflow"); setInterval("getCurentMusic()",1000); $('#modalAdd').modal(); @@ -160,6 +161,8 @@ function getCurentMusic() { break; } + if(switchAutoFlow.is(':checked') != data.autoflow) + switchAutoFlow.prop('checked', data.autoflow); getPlayList(); }) @@ -451,6 +454,15 @@ function listeners() { $('#btn_disconnect').click(function () { sendCommand({command : "DISCONNECT"}) }); + + switchAutoFlow.click(function () { + console.log(switchAutoFlow.is(':checked')) + if(switchAutoFlow.is(':checked')){ + sendCommand({command: 'AUTOFLOWON'}) + } + else + sendCommand({command: 'AUTOFLOWOFF'}) + }); } function disableBtn(btn) { diff --git a/src/main/resources/templates/music.html b/src/main/resources/templates/music.html index 78e88fd..27117e5 100644 --- a/src/main/resources/templates/music.html +++ b/src/main/resources/templates/music.html @@ -174,11 +174,11 @@
-
Playlist
-
+
Playlist
+ -
+
add_circle_outline @@ -215,6 +215,17 @@
+
+
+ AutoFlow +
+
+ +
+