From: Debayan Sutradhar Date: Tue, 01 Jun 2021 12:34:21 +0530 Subject: [OBS] - [SetReplayBuffer] - Updated to use new Action API, Cleanup, refactor --- [OBS] - [SetReplayBuffer] - Updated to use new Action API, Cleanup, refactor --- --- 'a/obssuite/setreplaybuffer/pom.xml' +++ b/obssuite/setreplaybuffer/pom.xml @@ -6,7 +6,7 @@ com.stream-pi obssuite_setreplaybufferaction - 1.0.0 + 2.0.1 @@ -39,7 +39,7 @@ 1.0.0-SNAPSHOT 1.0.0-SNAPSHOT - 2.0.0 + 2.0.1 UTF-8 11 --- 'a/obssuite/setreplaybuffer/src/main/java/setreplaybuffer/SetReplayBuffer.java' +++ b/obssuite/setreplaybuffer/src/main/java/setreplaybuffer/SetReplayBuffer.java @@ -7,10 +7,13 @@ import com.stream_pi.action_api.actionpr import com.stream_pi.action_api.externalplugin.NormalAction; import com.stream_pi.util.alert.StreamPiAlert; import com.stream_pi.util.alert.StreamPiAlertType; +import com.stream_pi.util.exception.MinorException; import com.stream_pi.util.version.Version; import mother.motherconnection.MotherConnection; import net.twasi.obsremotejava.OBSRemoteController; +import net.twasi.obsremotejava.callbacks.Callback; +import net.twasi.obsremotejava.requests.StartReplayBuffer.StartReplayBufferResponse; public class SetReplayBuffer extends NormalAction { @@ -29,10 +32,11 @@ public class SetReplayBuffer extends Nor states.add("Save"); } - private ArrayList states; + private final ArrayList states; @Override - public void initProperties() throws Exception { + public void initProperties() throws MinorException + { Property replayStatusActionProperty = new Property("replay_status", Type.LIST); replayStatusActionProperty.setListValue(states); @@ -43,43 +47,56 @@ public class SetReplayBuffer extends Nor } @Override - public void initAction() throws Exception { - // TODO Auto-generated method stub - } - - @Override - public void onActionClicked() throws Exception { - // TODO Auto-generated method stub - + public void onActionClicked() throws MinorException + { OBSRemoteController controller = MotherConnection.getRemoteController(); - if (controller == null) { - new StreamPiAlert("Is OBS Connected?", - "It seems there is no connection to OBS, please connect it in Settings", StreamPiAlertType.WARNING) - .show(); - } else { - - String state = states.get(getClientProperties().getSingleProperty("replay_status").getSelectedIndex()); + String state = states.get(getClientProperties().getSingleProperty("replay_status").getSelectedIndex()); - if(state.equals("Start")) - { - controller.startReplayBuffer(MotherConnection.getDefaultCallBack("Failed to Start Replay Buffer","Failed to do that")); - } - else if(state.equals("Stop")) + if (MotherConnection.getRemoteController() == null) + { + boolean autoConnect = getClientProperties().getSingleProperty( + "auto_connect" + ).getBoolValue(); + + if(autoConnect) { - controller.stopReplayBuffer(MotherConnection.getDefaultCallBack("Failed to Stop Replay Buffer","Failed to do that")); + MotherConnection.connect(()->setReplayBuffer(state)); } - else if(state.equals("Save")) + else { - controller.saveReplayBuffer(MotherConnection.getDefaultCallBack("Failed to Save Replay Buffer","Failed to do that")); + MotherConnection.showOBSNotRunningError(); } } + else + { + setReplayBuffer(state); + } } - @Override - public void onShutDown() throws Exception { - // TODO Auto-generated method stub + private void errorThrow(String status, String error) + { + if(status.equals("error")) + { + new StreamPiAlert("OBS", error, StreamPiAlertType.ERROR).show(); + } + } + private void setReplayBuffer(String state) + { + OBSRemoteController controller = MotherConnection.getRemoteController(); + + switch (state) + { + case "Start": + controller.startReplayBuffer(startReplayBufferResponse -> errorThrow(startReplayBufferResponse.getStatus(), startReplayBufferResponse.getError())); + break; + case "Stop": + controller.stopReplayBuffer(stopReplayBufferResponse -> errorThrow(stopReplayBufferResponse.getStatus(), stopReplayBufferResponse.getError())); + break; + case "Save": + controller.saveReplayBuffer(saveReplayBufferResponse -> errorThrow(saveReplayBufferResponse.getStatus(), saveReplayBufferResponse.getError())); + break; + } } - }