feat(panettone): Send email notifications for comments

When a user posts a comment on an issue, send email
notifications (respecting the enable-email-notifications setting) to the
author of that issue and all the other users who have commented on that
issue. Since the oauth & gmail API stuff that the relay does is slow,
this happens in a background thread.

Change-Id: Ic00c265deab1030d9ba64c29c9f56314dd179141
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2805
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: tazjin <mail@tazj.in>
This commit is contained in:
Griffin Smith 2021-04-03 13:44:25 -04:00 committed by glittershark
parent 349b98ccc8
commit 8d3ab61e7c
4 changed files with 46 additions and 2 deletions

View file

@ -32,7 +32,7 @@
(:use :cl :panettone.util :klatre :postmodern :iterate)
(:import-from :alexandria :if-let :when-let :define-constant)
(:export
:connect-postgres :ddl/init
:connect-postgres :ddl/init :make-thread
:user-settings
:user-dn :enable-email-notifications-p :settings-for-user
@ -46,7 +46,8 @@
:issue-events
:issue-comments :num-comments :create-issue-comment))
:issue-comments :num-comments :create-issue-comment
:issue-commenter-dns))
(defpackage panettone.email
(:nicknames :email)
@ -69,6 +70,7 @@
(:import-from :defclass-std :defclass/std)
(:import-from :alexandria :if-let :when-let :switch :alist-hash-table)
(:import-from :cl-ppcre :split)
(:import-from :bordeaux-threads :make-thread)
(:import-from
:panettone.model
:id :subject :body :author-dn :issue-id :status :created-at