From fb1e41ddc4efeea462652f584c1abf6117fced31 Mon Sep 17 00:00:00 2001
From: Tobias Reisinger <tobias@msrg.cc>
Date: Tue, 1 Oct 2024 00:20:08 +0200
Subject: [PATCH 1/2] Fix some issues

---
 .forgejo/workflows/build.yaml | 10 +---------
 Cargo.lock                    |  2 +-
 Cargo.toml                    |  2 +-
 ts-control                    | 11 +++++++----
 4 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/.forgejo/workflows/build.yaml b/.forgejo/workflows/build.yaml
index db7e32c..9a70b4a 100644
--- a/.forgejo/workflows/build.yaml
+++ b/.forgejo/workflows/build.yaml
@@ -16,17 +16,9 @@ jobs:
           source "$HOME/.cargo/env"
           cargo build --release
         shell: bash
-      - uses: https://code.forgejo.org/actions/upload-artifact@v3
-        with:
-          name: teamspeak-query-lib
-          path: ${{ github.workspace }}/target/release/teamspeak-query-lib
-      - uses: https://code.forgejo.org/actions/download-artifact@v3
-        with:
-          name: teamspeak-query-lib
-          path: /tmp/artifacts
-        shell: bash
       - id: copy-ts-control-artificat
         run: |
+          cp ${{ github.workspace }}/target/release/teamspeak-query-lib /tmp/artifacts
           cp ${{ github.workspace }}/ts-control /tmp/artifacts
         shell: bash
       - uses: https://code.forgejo.org/actions/forgejo-release@v1
diff --git a/Cargo.lock b/Cargo.lock
index c541dfd..0d9a85b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -182,7 +182,7 @@ dependencies = [
 
 [[package]]
 name = "teamspeak-query-lib"
-version = "0.1.5"
+version = "0.1.6"
 dependencies = [
  "clap",
  "serde",
diff --git a/Cargo.toml b/Cargo.toml
index 78a7388..dfad335 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "teamspeak-query-lib"
-version = "0.1.5"
+version = "0.1.6"
 edition = "2021"
 
 [dependencies]
diff --git a/ts-control b/ts-control
index 601bb90..4c89323 100755
--- a/ts-control
+++ b/ts-control
@@ -46,12 +46,16 @@ _ts_control_fetch() {
 }
 
 _ts_control_single_or_dmenu() {
-	options=$(echo "$1" | grep "$2")
+	filter="$2"
+	if [ "$filter" == "^$" ]; then
+		filter=""
+	fi
+	options=$(echo "$1" | grep "$filter")
 	count=$(echo "$options" | wc -l)
 	if [ "$count" -eq 1 ]; then
 		echo "$options"
 	else
-		echo "$options" | $DMENU
+		echo "$1" | $DMENU
 	fi
 }
 
@@ -90,8 +94,7 @@ handle_ntfy_events() {
   done
 }
 
-# Add '$' to $1 to add 'End of line' to the regex for grep
-action=$(_ts_control_single_or_dmenu "$actions" "$1$")
+action=$(_ts_control_single_or_dmenu "$actions" "^$1$")
 
 case $action in
 	"quick")

From 3463907670d4bac7bab76b79e8399edef27cc0d8 Mon Sep 17 00:00:00 2001
From: Tobias Reisinger <tobias@msrg.cc>
Date: Sun, 27 Oct 2024 18:55:08 +0100
Subject: [PATCH 2/2] Add response option to ntfy

---
 ts-control | 33 ++++++++++++++++++++++++---------
 1 file changed, 24 insertions(+), 9 deletions(-)

diff --git a/ts-control b/ts-control
index 4c89323..d872875 100755
--- a/ts-control
+++ b/ts-control
@@ -64,6 +64,7 @@ handle_ntfy_events() {
     msg=$(echo "$data" | jq -r --unbuffered '.message')
     type=$(echo "$data" | jq -r --unbuffered '.type')
     mode=$(echo "$data" | jq -r --unbuffered '.params.targetmode')
+    client_nickname=$(echo "$data" | jq -r --unbuffered '.client.client_nickname')
     
     echo "$data"
 
@@ -71,25 +72,39 @@ handle_ntfy_events() {
       continue # Skip all messages that are not direct messages
     fi
     
-    friendly_type="Event"
+    title="TS3 Event"
     case $type in
       "NotifyClientPoke")
-        friendly_type="Poke"
+        title="TS3 Poke"
         ;;
       "NotifyTextMessage")
-        friendly_type="Message"
+        title="TS3 Message"
         ;;
     esac
     
-    echo "($friendly_type) $target: $msg"
+    echo "($title) $target: $msg"
+
+    payload=$(jq -n \
+  		--arg topic "$TS3_NTFY_TOPIC" \
+  		--arg webhook "$TS3_NTFY_WEBHOOK&client=$client_nickname" \
+  		--arg msg "$msg" \
+  		--arg type "$title" \
+  		'{
+    		topic: $topic,
+    		message: $msg,
+    		title: $type,
+    		actions: [{
+        	action: "http",
+        	label: "TS response",
+        	method: "POST",
+        	url: $webhook,
+        	clear: true
+      	}]
+  		}')
     
     curl -sSL \
   		-H "Authorization: Bearer $TS3_NTFY_TOKEN" \
-  		-d "{
-     		\"topic\": \"$TS3_NTFY_TOPIC\",
-    			\"message\": \"$msg\",
-    			\"title\": \"TS3 $friendly_type\"
-  			}" \
+  		-d "$payload" \
   		"$TS3_NTFY_HOST"
   done
 }