feat(web/panettone): Noping issue authors' usernames

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>
This commit is contained in:
Griffin Smith 2021-03-28 11:05:21 -04:00 committed by glittershark
parent 1f250e374d
commit db62866d82
4 changed files with 20 additions and 3 deletions

View file

@ -2,6 +2,12 @@
(in-package :panettone.irc) (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 () (defun get-irccat-config ()
"Reads the IRCCATHOST and IRCCATPORT environment variables, and returns them "Reads the IRCCATHOST and IRCCATPORT environment variables, and returns them
as two values" as two values"

View file

@ -13,8 +13,9 @@
(:export :render-inline-markdown)) (:export :render-inline-markdown))
(defpackage panettone.irc (defpackage panettone.irc
(:nicknames :irc)
(:use :cl :usocket) (:use :cl :usocket)
(:export :send-irc-notification)) (:export :noping :send-irc-notification))
(defpackage :panettone.authentication (defpackage :panettone.authentication
(:nicknames :authn) (:nicknames :authn)

View file

@ -460,7 +460,9 @@
(send-irc-notification (send-irc-notification
(format nil (format nil
"b/~A: \"~A\" opened by ~A - https://b.tvl.fyi/issues/~A" "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)) (id issue))
:channel (or (uiop:getenvp "ISSUECHANNEL") :channel (or (uiop:getenvp "ISSUECHANNEL")
"##tvl-dev")) "##tvl-dev"))
@ -524,7 +526,10 @@
(send-irc-notification (send-irc-notification
(format nil (format nil
"b/~A: \"~A\" closed by ~A - https://b.tvl.fyi/issues/~A" "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") :channel (or (uiop:getenvp "ISSUECHANNEL")
"##tvl-dev"))) "##tvl-dev")))
(hunchentoot:redirect (format nil "/issues/~A" id))) (hunchentoot:redirect (format nil "/issues/~A" id)))

View file

@ -0,0 +1,5 @@
(in-package :panettone.tests)
(declaim (optimize (safety 3)))
(test noping-test
(is (not (equal "grfn" (panettone.irc:noping "grfn")))))