*/ class OauthTokenRefreshListener implements IEventListener { private GoogleIntegration $googleIntegration; private MicrosoftIntegration $microsoftIntegration; private AccountService $accountService; public function __construct(GoogleIntegration $googleIntegration, MicrosoftIntegration $microsoftIntegration, AccountService $accountService) { $this->googleIntegration = $googleIntegration; $this->accountService = $accountService; $this->microsoftIntegration = $microsoftIntegration; } #[\Override] public function handle(Event $event): void { if (!($event instanceof BeforeImapClientCreated)) { return; } if ($this->googleIntegration->isGoogleOauthAccount($event->getAccount())) { $updated = $this->googleIntegration->refresh($event->getAccount()); } elseif ($this->microsoftIntegration->isMicrosoftOauthAccount($event->getAccount())) { $updated = $this->microsoftIntegration->refresh($event->getAccount()); } else { return; } $this->accountService->update($updated->getMailAccount()); } }