about summary refs log tree commit diff
path: root/web/panettone
diff options
context:
space:
mode:
authorGriffin Smith <grfn@gws.fyi>2021-03-28T15·05-0400
committerglittershark <grfn@gws.fyi>2021-03-28T17·07+0000
commitdb62866d820cf524b67cebe34033d3928804cf3c (patch)
tree5a68fa9f462eae8f08ad78c4383bb9b321866d5b /web/panettone
parent1f250e374d9da401e60f2db02151af8f6bdb7c28 (diff)
feat(web/panettone): Noping issue authors' usernames r/2355
When sending irc notifications, insert a zero-width space after the
first character of the username of the author of issues, to prevent that
user from receiving a ping.

Fixes: b/95
Change-Id: Ibcacb45129b2cb99b587744eb61f4f1dbc0060d6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2693
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
Diffstat (limited to 'web/panettone')
-rw-r--r--web/panettone/src/irc.lisp6
-rw-r--r--web/panettone/src/packages.lisp3
-rw-r--r--web/panettone/src/panettone.lisp9
-rw-r--r--web/panettone/test/irc_test.lisp5
4 files changed, 20 insertions, 3 deletions
diff --git a/web/panettone/src/irc.lisp b/web/panettone/src/irc.lisp
index f116e2a706..2ab72a2e39 100644
--- a/web/panettone/src/irc.lisp
+++ b/web/panettone/src/irc.lisp
@@ -2,6 +2,12 @@
 
 (in-package :panettone.irc)
 
+(defun noping (s)
+  (format nil "~A~A~A"
+          (char s 0)
+          #\ZERO_WIDTH_SPACE
+          (subseq s 1)))
+
 (defun get-irccat-config ()
   "Reads the IRCCATHOST and IRCCATPORT environment variables, and returns them
 as two values"
diff --git a/web/panettone/src/packages.lisp b/web/panettone/src/packages.lisp
index c5fe79b7bc..3b6edcdd14 100644
--- a/web/panettone/src/packages.lisp
+++ b/web/panettone/src/packages.lisp
@@ -13,8 +13,9 @@
   (:export :render-inline-markdown))
 
 (defpackage panettone.irc
+  (:nicknames :irc)
   (:use :cl :usocket)
-  (:export :send-irc-notification))
+  (:export :noping :send-irc-notification))
 
 (defpackage :panettone.authentication
   (:nicknames :authn)
diff --git a/web/panettone/src/panettone.lisp b/web/panettone/src/panettone.lisp
index 6e43312327..c97a988404 100644
--- a/web/panettone/src/panettone.lisp
+++ b/web/panettone/src/panettone.lisp
@@ -460,7 +460,9 @@
         (send-irc-notification
          (format nil
                  "b/~A: \"~A\" opened by ~A - https://b.tvl.fyi/issues/~A"
-                 (id issue) subject (cn *user*)
+                 (id issue)
+                 subject
+                 (irc:noping (cn *user*))
                  (id issue))
          :channel (or (uiop:getenvp "ISSUECHANNEL")
                       "##tvl-dev"))
@@ -524,7 +526,10 @@
     (send-irc-notification
      (format nil
              "b/~A: \"~A\" closed by ~A - https://b.tvl.fyi/issues/~A"
-             id (subject issue) (cn *user*) id)
+             id
+             (subject issue)
+             (irc:noping (cn *user*))
+             id)
      :channel (or (uiop:getenvp "ISSUECHANNEL")
                   "##tvl-dev")))
   (hunchentoot:redirect (format nil "/issues/~A" id)))
diff --git a/web/panettone/test/irc_test.lisp b/web/panettone/test/irc_test.lisp
new file mode 100644
index 0000000000..0224836cbc
--- /dev/null
+++ b/web/panettone/test/irc_test.lisp
@@ -0,0 +1,5 @@
+(in-package :panettone.tests)
+(declaim (optimize (safety 3)))
+
+(test noping-test
+  (is (not (equal "grfn" (panettone.irc:noping "grfn")))))