From 7db81cde444f6bc95e79527af0997de1788d48c7 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Sun, 19 Mar 2023 13:11:46 +0100 Subject: [feature] Email notifications for new / closed moderation reports (#1628) * start fiddling about with email sending to allow multiple recipients * do some fiddling * notifs working * notify on closed report * finishing up * envparsing * use strings.ContainsAny --- internal/email/report.go | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 internal/email/report.go (limited to 'internal/email/report.go') diff --git a/internal/email/report.go b/internal/email/report.go new file mode 100644 index 000000000..7c4c10c69 --- /dev/null +++ b/internal/email/report.go @@ -0,0 +1,64 @@ +// GoToSocial +// Copyright (C) GoToSocial Authors admin@gotosocial.org +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package email + +const ( + newReportTemplate = "email_new_report.tmpl" + newReportSubject = "GoToSocial New Report" + reportClosedTemplate = "email_report_closed.tmpl" + reportClosedSubject = "GoToSocial Report Closed" +) + +type NewReportData struct { + // URL of the instance to present to the receiver. + InstanceURL string + // Name of the instance to present to the receiver. + InstanceName string + // URL to open the report in the settings panel. + ReportURL string + // Domain from which the report originated. + // Can be empty string for local reports. + ReportDomain string + // Domain targeted by the report. + // Can be empty string for local reports targeting local users. + ReportTargetDomain string +} + +func (s *sender) SendNewReportEmail(toAddresses []string, data NewReportData) error { + return s.sendTemplate(newReportTemplate, newReportSubject, data, toAddresses...) +} + +type ReportClosedData struct { + // Username to be addressed. + Username string + // URL of the instance to present to the receiver. + InstanceURL string + // Name of the instance to present to the receiver. + InstanceName string + // Username of the report target. + ReportTargetUsername string + // Domain of the report target. + // Can be empty string for local reports targeting local users. + ReportTargetDomain string + // Comment left by the admin who closed the report. + ActionTakenComment string +} + +func (s *sender) SendReportClosedEmail(toAddress string, data ReportClosedData) error { + return s.sendTemplate(reportClosedTemplate, reportClosedSubject, data, toAddress) +} -- cgit v1.2.3