From 1cf0f0af334361238b234ac854daae5449cdc6f8 Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Fri, 6 Oct 2023 23:42:34 +0200
Subject: [PATCH] #187 - Add new stop-action method to web api

---
 .../api/websocket/WebSocketHandler.scala      |  3 ++-
 .../websocket/methods/StopActionMethod.scala  | 19 +++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)
 create mode 100644 PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/StopActionMethod.scala

diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala
index 469b8294..8a67fc24 100644
--- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala
@@ -21,7 +21,8 @@ class WebSocketHandler {
 		"pad-status-change" -> new PadStatusChangeMethod,
 		"cart-action" -> new CartActionMethod,
 		"page-action" -> new PageActionMethod,
-		"navigate-action" -> new NavigateActionMethod
+		"navigate-action" -> new NavigateActionMethod,
+		"stop-action" -> new StopActionMethod
 	)
 
 	@OnWebSocketConnect def connected(session: Session): Unit = {
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/StopActionMethod.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/StopActionMethod.scala
new file mode 100644
index 00000000..30622685
--- /dev/null
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/StopActionMethod.scala
@@ -0,0 +1,19 @@
+package de.tobias.playpad.plugin.api.websocket.methods
+
+import com.google.gson.JsonObject
+import de.tobias.playpad.PlayPadPlugin
+import de.tobias.playpad.pad.PadStatus
+import de.tobias.playpad.plugin.api.websocket.MethodExecutable
+import de.tobias.playpad.plugin.api.websocket.message.Message
+import org.eclipse.jetty.websocket.api.Session
+
+class StopActionMethod extends MethodExecutable {
+
+	override def execute(session: Session, message: Message): JsonObject = {
+		val project = PlayPadPlugin.getInstance.getCurrentProject
+		project.getPads.stream().forEach(pad => {
+			if ((pad.getStatus eq PadStatus.PLAY) || (pad.getStatus eq PadStatus.PAUSE)) pad.setStatus(PadStatus.STOP, true)
+		})
+		null
+	}
+}
-- 
GitLab