Skip to content

Commit bd44a04

Browse files
feat: jmap support - 2b
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
1 parent a603e2a commit bd44a04

22 files changed

Lines changed: 927 additions & 1284 deletions

lib/AppInfo/Application.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
use OCA\Mail\Contracts\IDkimService;
1818
use OCA\Mail\Contracts\IDkimValidator;
1919
use OCA\Mail\Contracts\IMailSearch;
20-
use OCA\Mail\Contracts\IMailTransmission;
2120
use OCA\Mail\Contracts\ITrustedSenderService;
2221
use OCA\Mail\Contracts\IUserPreferences;
2322
use OCA\Mail\Dashboard\ImportantMailWidget;
@@ -61,7 +60,6 @@
6160
use OCA\Mail\Service\AvatarService;
6261
use OCA\Mail\Service\DkimService;
6362
use OCA\Mail\Service\DkimValidator;
64-
use OCA\Mail\Service\MailTransmission;
6563
use OCA\Mail\Service\Search\MailSearch;
6664
use OCA\Mail\Service\TrustedSenderService;
6765
use OCA\Mail\Service\UserPreferenceService;
@@ -119,7 +117,6 @@ public function register(IRegistrationContext $context): void {
119117
$context->registerServiceAlias(IAvatarService::class, AvatarService::class);
120118
$context->registerServiceAlias(IAttachmentService::class, AttachmentService::class);
121119
$context->registerServiceAlias(IMailSearch::class, MailSearch::class);
122-
$context->registerServiceAlias(IMailTransmission::class, MailTransmission::class);
123120
$context->registerServiceAlias(ITrustedSenderService::class, TrustedSenderService::class);
124121
$context->registerServiceAlias(IUserPreferences::class, UserPreferenceService::class);
125122
$context->registerServiceAlias(IDkimService::class, DkimService::class);

lib/Contracts/IMailTransmission.php

Lines changed: 0 additions & 63 deletions
This file was deleted.

lib/Controller/AccountsController.php

Lines changed: 0 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,19 @@
1010

1111
namespace OCA\Mail\Controller;
1212

13-
use Horde_Imap_Client;
1413
use OCA\Mail\Account;
1514
use OCA\Mail\AppInfo\Application;
16-
use OCA\Mail\Contracts\IMailTransmission;
1715
use OCA\Mail\Db\Mailbox;
1816
use OCA\Mail\Exception\ClientException;
1917
use OCA\Mail\Exception\CouldNotConnectException;
2018
use OCA\Mail\Exception\ServiceException;
2119
use OCA\Mail\Http\JsonResponse as MailJsonResponse;
2220
use OCA\Mail\Http\TrapError;
2321
use OCA\Mail\IMAP\MailboxSync;
24-
use OCA\Mail\Model\NewMessageData;
2522
use OCA\Mail\Service\AccountService;
2623
use OCA\Mail\Service\AliasesService;
2724
use OCA\Mail\Service\MailManager;
2825
use OCA\Mail\Service\SetupService;
29-
use OCA\Mail\Service\Sync\SyncService;
3026
use OCP\AppFramework\Controller;
3127
use OCP\AppFramework\Http;
3228
use OCP\AppFramework\Http\Attribute\OpenAPI;
@@ -45,10 +41,8 @@ class AccountsController extends Controller {
4541
private LoggerInterface $logger;
4642
private IL10N $l10n;
4743
private AliasesService $aliasesService;
48-
private IMailTransmission $mailTransmission;
4944
private SetupService $setup;
5045
private MailManager $mailManager;
51-
private SyncService $syncService;
5246
private IConfig $config;
5347
private IRemoteHostValidator $hostValidator;
5448
private MailboxSync $mailboxSync;
@@ -61,10 +55,8 @@ public function __construct(
6155
LoggerInterface $logger,
6256
IL10N $l10n,
6357
AliasesService $aliasesService,
64-
IMailTransmission $mailTransmission,
6558
SetupService $setup,
6659
MailManager $mailManager,
67-
SyncService $syncService,
6860
IConfig $config,
6961
IRemoteHostValidator $hostValidator,
7062
MailboxSync $mailboxSync,
@@ -76,10 +68,8 @@ public function __construct(
7668
$this->logger = $logger;
7769
$this->l10n = $l10n;
7870
$this->aliasesService = $aliasesService;
79-
$this->mailTransmission = $mailTransmission;
8071
$this->setup = $setup;
8172
$this->mailManager = $mailManager;
82-
$this->syncService = $syncService;
8373
$this->config = $config;
8474
$this->hostValidator = $hostValidator;
8575
$this->mailboxSync = $mailboxSync;
@@ -398,59 +388,6 @@ public function create(string $accountName,
398388
);
399389
}
400390

401-
/**
402-
* @NoAdminRequired
403-
*
404-
* @return JSONResponse
405-
*
406-
* @throws ClientException
407-
*/
408-
#[TrapError]
409-
public function draft(int $id,
410-
string $subject,
411-
string $body,
412-
string $to,
413-
string $cc,
414-
string $bcc,
415-
bool $isHtml = true,
416-
?int $draftId = null): JSONResponse {
417-
if ($draftId === null) {
418-
$this->logger->info("Saving a new draft in account <$id>");
419-
} else {
420-
$this->logger->info("Updating draft <$draftId> in account <$id>");
421-
}
422-
423-
$account = $this->accountService->find($this->currentUserId, $id);
424-
$previousDraft = null;
425-
if ($draftId !== null) {
426-
try {
427-
$previousDraft = $this->mailManager->getMessage($this->currentUserId, $draftId);
428-
} catch (ClientException $e) {
429-
$this->logger->info("Draft {$draftId} could not be loaded: {$e->getMessage()}");
430-
}
431-
}
432-
$messageData = NewMessageData::fromRequest($account, $subject, $body, $to, $cc, $bcc, [], $isHtml);
433-
434-
try {
435-
/** @var Mailbox $draftsMailbox */
436-
[, $draftsMailbox, $newUID] = $this->mailTransmission->saveDraft($messageData, $previousDraft);
437-
$this->syncService->syncMailbox(
438-
$account,
439-
$draftsMailbox,
440-
Horde_Imap_Client::SYNC_NEWMSGSUIDS,
441-
false,
442-
null,
443-
[]
444-
);
445-
return new JSONResponse([
446-
'id' => $this->mailManager->getMessageIdForUid($draftsMailbox, $newUID)
447-
]);
448-
} catch (ClientException|ServiceException $ex) {
449-
$this->logger->error('Saving draft failed: ' . $ex->getMessage());
450-
throw $ex;
451-
}
452-
}
453-
454391
/**
455392
* @NoAdminRequired
456393
*

lib/Controller/MessagesController.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
use OCA\Mail\Attachment;
1616
use OCA\Mail\Contracts\IDkimService;
1717
use OCA\Mail\Contracts\IMailSearch;
18-
use OCA\Mail\Contracts\IMailTransmission;
1918
use OCA\Mail\Contracts\ITrustedSenderService;
19+
use OCA\Mail\Protocol\ProtocolFactory;
2020
use OCA\Mail\Contracts\IUserPreferences;
2121
use OCA\Mail\Db\Message;
2222
use OCA\Mail\Exception\ClientException;
@@ -67,7 +67,7 @@ class MessagesController extends Controller {
6767
private IURLGenerator $urlGenerator;
6868
private ContentSecurityPolicyNonceManager $nonceManager;
6969
private ITrustedSenderService $trustedSenderService;
70-
private IMailTransmission $mailTransmission;
70+
private ProtocolFactory $protocolFactory;
7171
private SmimeService $smimeService;
7272
private IDkimService $dkimService;
7373
private IUserPreferences $preferences;
@@ -89,7 +89,7 @@ public function __construct(
8989
IURLGenerator $urlGenerator,
9090
ContentSecurityPolicyNonceManager $nonceManager,
9191
ITrustedSenderService $trustedSenderService,
92-
IMailTransmission $mailTransmission,
92+
ProtocolFactory $protocolFactory,
9393
SmimeService $smimeService,
9494
IDkimService $dkimService,
9595
IUserPreferences $preferences,
@@ -110,7 +110,7 @@ public function __construct(
110110
$this->urlGenerator = $urlGenerator;
111111
$this->nonceManager = $nonceManager;
112112
$this->trustedSenderService = $trustedSenderService;
113-
$this->mailTransmission = $mailTransmission;
113+
$this->protocolFactory = $protocolFactory;
114114
$this->smimeService = $smimeService;
115115
$this->dkimService = $dkimService;
116116
$this->preferences = $preferences;
@@ -497,7 +497,7 @@ public function mdn(int $id): JSONResponse {
497497
}
498498

499499
try {
500-
$this->mailTransmission->sendMdn($account, $mailbox, $message);
500+
$this->protocolFactory->transmissionConnector($account)->sendMdn($account, $mailbox, $message);
501501
$this->mailManager->flagMessages($account, $mailbox, '$mdnsent', true, $message);
502502
} catch (ServiceException $ex) {
503503
$this->logger->error('Sending mdn failed: ' . $ex->getMessage());

0 commit comments

Comments
 (0)