From 18ec96f12417d70dc0273c439ea100e27c9cdcf9 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Fri, 8 May 2026 14:41:58 +0530 Subject: [PATCH] Address Greptile feedback for queue publishers --- .../Modules/Teams/Http/Memberships/Create.php | 4 +++- src/Appwrite/Platform/Tasks/ScheduleMessages.php | 14 ++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php b/src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php index d16a71780a..5500a56cbc 100644 --- a/src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php +++ b/src/Appwrite/Platform/Modules/Teams/Http/Memberships/Create.php @@ -95,12 +95,13 @@ class Create extends Action ->inject('timelimit') ->inject('usage') ->inject('plan') + ->inject('platform') ->inject('proofForPassword') ->inject('proofForToken') ->callback($this->action(...)); } - public function action(string $teamId, string $email, string $userId, string $phone, array $roles, string $url, string $name, Response $response, Document $project, User $user, Database $dbForProject, Authorization $authorization, Locale $locale, MailPublisher $publisherForMails, MessagingPublisher $publisherForMessaging, Event $queueForEvents, callable $timelimit, Context $usage, array $plan, Password $proofForPassword, Token $proofForToken) + public function action(string $teamId, string $email, string $userId, string $phone, array $roles, string $url, string $name, Response $response, Document $project, User $user, Database $dbForProject, Authorization $authorization, Locale $locale, MailPublisher $publisherForMails, MessagingPublisher $publisherForMessaging, Event $queueForEvents, callable $timelimit, Context $usage, array $plan, array $platform, Password $proofForPassword, Token $proofForToken) { $isAppUser = $user->isApp($authorization->getRoles()); $isPrivilegedUser = $user->isPrivileged($authorization->getRoles()); @@ -417,6 +418,7 @@ class Create extends Action preview: $preview, smtp: $smtpConfig, variables: $emailVariables, + platform: $platform, )); } elseif (! empty($phone)) { if (empty(System::getEnv('_APP_SMS_PROVIDER'))) { diff --git a/src/Appwrite/Platform/Tasks/ScheduleMessages.php b/src/Appwrite/Platform/Tasks/ScheduleMessages.php index 23068fcb9d..634fb26dc2 100644 --- a/src/Appwrite/Platform/Tasks/ScheduleMessages.php +++ b/src/Appwrite/Platform/Tasks/ScheduleMessages.php @@ -14,6 +14,8 @@ class ScheduleMessages extends ScheduleBase public const UPDATE_TIMER = 3; // seconds public const ENQUEUE_TIMER = 4; // seconds + private ?MessagingPublisher $publisherForMessaging = null; + public static function getName(): string { return 'schedule-messages'; @@ -31,6 +33,11 @@ class ScheduleMessages extends ScheduleBase protected function enqueueResources(Database $dbForPlatform, callable $getProjectDB): void { + $publisherForMessaging = $this->publisherForMessaging ??= new MessagingPublisher( + $this->publisherMessaging, + new Queue(System::getEnv('_APP_MESSAGING_QUEUE_NAME', Event::MESSAGING_QUEUE_NAME)) + ); + foreach ($this->schedules as $schedule) { if (!$schedule['active']) { continue; @@ -43,14 +50,9 @@ class ScheduleMessages extends ScheduleBase continue; } - \go(function () use ($schedule, $scheduledAt, $dbForPlatform) { + \go(function () use ($schedule, $scheduledAt, $dbForPlatform, $publisherForMessaging) { $this->updateProjectAccess($schedule['project'], $dbForPlatform); - $publisherForMessaging = new MessagingPublisher( - $this->publisherMessaging, - new Queue(System::getEnv('_APP_MESSAGING_QUEUE_NAME', Event::MESSAGING_QUEUE_NAME)) - ); - $publisherForMessaging->enqueue(new MessagingMessage( type: MESSAGE_SEND_TYPE_EXTERNAL, project: $schedule['project'],