From dd82befbe9d83fcf8539b1d479102425958ccda8 Mon Sep 17 00:00:00 2001 From: fenn-cs Date: Thu, 26 Sep 2024 13:00:52 +0200 Subject: [PATCH] fix(ShareAPI): Send mails for mail shares by default It looks like, the frontend it needs to provide the `sendMail` param for the backend to decide wether mails would be sent. Our UI does not have that at the moment so it should default to sending emails always for mail shares. Not exactly sure how this was handled earlier but this is a good starting point. Resolves : https://github.com/nextcloud/server/issues/48012 Signed-off-by: fenn-cs --- .../lib/Controller/ShareAPIController.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index 2874d35caa5e4..ffd7c605032bf 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -659,7 +659,16 @@ public function createShare( $this->checkInheritedAttributes($share); // Handle mail send - if ($sendMail === 'true' || $sendMail === 'false') { + if (is_null($sendMail)) { + // Define a default behavior when sendMail is not provided + if ($shareType === IShare::TYPE_EMAIL && strlen($shareWith) !== 0) { + // For email shares, the default is to send the mail + $share->setMailSend(true); + } else { + // For all other share types, the default is to not send the mail + $share->setMailSend(false); + } + } else { $share->setMailSend($sendMail === 'true'); } @@ -719,7 +728,7 @@ public function createShare( } // Only share by mail have a recipient - if (is_string($shareWith) && $shareType === IShare::TYPE_EMAIL) { + if (!empty($shareWith) && $shareType === IShare::TYPE_EMAIL) { // If sending a mail have been requested, validate the mail address if ($share->getMailSend() && !$this->mailer->validateMailAddress($shareWith)) { throw new OCSNotFoundException($this->l->t('Please specify a valid email address')); @@ -1219,11 +1228,6 @@ public function updateShare( } $this->checkInheritedAttributes($share); - // Handle mail send - if ($sendMail === 'true' || $sendMail === 'false') { - $share->setMailSend($sendMail === 'true'); - } - /** * expirationdate, password and publicUpload only make sense for link shares */