From a786e4b523be1fdb8704fae44bc1908dcd04aa77 Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Fri, 19 Aug 2022 15:47:35 +0200 Subject: [PATCH] Open attachments with viewer Signed-off-by: Christoph Wurst --- lib/Controller/PageController.php | 12 ++++- lib/Db/MessageMapper.php | 7 +-- package-lock.json | 17 +++++++ package.json | 1 + src/components/AttachmentImageViewer.vue | 44 ------------------ src/components/MessageAttachment.vue | 15 ++++--- src/components/MessageAttachments.vue | 47 +++++++++++++++----- tests/Unit/Controller/PageControllerTest.php | 8 +++- 8 files changed, 85 insertions(+), 66 deletions(-) delete mode 100644 src/components/AttachmentImageViewer.vue diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index 4a02c246c1..befa106fa1 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -33,17 +33,20 @@ use OCA\Mail\Db\TagMapper; use OCA\Mail\Service\AccountService; use OCA\Mail\Service\AliasesService; +use OCA\Viewer\Event\LoadViewer; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\ContentSecurityPolicy; use OCP\AppFramework\Http\RedirectResponse; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Services\IInitialState; +use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; use OCP\IRequest; use OCP\IURLGenerator; use OCP\IUserSession; use Psr\Log\LoggerInterface; use Throwable; +use function class_exists; use function json_decode; class PageController extends Controller { @@ -83,6 +86,7 @@ class PageController extends Controller { /** @var OutboxService */ private $outboxService; + private IEventDispatcher $dispatcher; public function __construct(string $appName, IRequest $request, @@ -97,7 +101,8 @@ public function __construct(string $appName, TagMapper $tagMapper, IInitialState $initialStateService, LoggerInterface $logger, - OutboxService $outboxService) { + OutboxService $outboxService, + IEventDispatcher $dispatcher) { parent::__construct($appName, $request); $this->urlGenerator = $urlGenerator; @@ -112,6 +117,7 @@ public function __construct(string $appName, $this->initialStateService = $initialStateService; $this->logger = $logger; $this->outboxService = $outboxService; + $this->dispatcher = $dispatcher; } /** @@ -121,6 +127,10 @@ public function __construct(string $appName, * @return TemplateResponse renders the index page */ public function index(): TemplateResponse { + if (class_exists(LoadViewer::class)) { + $this->dispatcher->dispatchTyped(new LoadViewer()); + } + $this->initialStateService->provideInitialState( 'debug', $this->config->getSystemValue('debug', false) diff --git a/lib/Db/MessageMapper.php b/lib/Db/MessageMapper.php index 2d04164dcb..3617277251 100644 --- a/lib/Db/MessageMapper.php +++ b/lib/Db/MessageMapper.php @@ -48,6 +48,7 @@ use function array_udiff; use function get_class; use function ltrim; +use function mb_convert_encoding; use function mb_strcut; use function OCA\Mail\array_flat_map; @@ -496,9 +497,9 @@ public function updatePreviewDataBulk(Message ...$messages): array { $query->setParameter('uid', $message->getUid(), IQueryBuilder::PARAM_INT); $query->setParameter('mailbox_id', $message->getMailboxId(), IQueryBuilder::PARAM_INT); $query->setParameter('flag_attachments', $message->getFlagAttachments(), $message->getFlagAttachments() === null ? IQueryBuilder::PARAM_NULL : IQueryBuilder::PARAM_BOOL); - $previewText = $message->getPreviewText(); - if ($previewText !== null) { - $previewText = mb_strcut(mb_convert_encoding($previewText, 'UTF-8', 'UTF-8'), 0, 255); + $previewText = null; + if ($message->getPreviewText() !== null) { + $previewText = mb_strcut(mb_convert_encoding($message->getPreviewText(), 'UTF-8', 'UTF-8'), 0, 255); } $query->setParameter( 'preview_text', diff --git a/package-lock.json b/package-lock.json index 1e6a218f3c..275990b194 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,6 +35,7 @@ "@nextcloud/l10n": "^1.6.0", "@nextcloud/logger": "^2.3.0", "@nextcloud/moment": "^1.2.1", + "@nextcloud/paths": "^2.1.0", "@nextcloud/router": "^2.0.0", "@nextcloud/vue": "^6.0.0-beta.6", "@nextcloud/vue-dashboard": "^2", @@ -3533,6 +3534,14 @@ "node-gettext": "^3.0.0" } }, + "node_modules/@nextcloud/paths": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-2.1.0.tgz", + "integrity": "sha512-8wX0gqwez0bTuAS8A0OEiqbbp0ZsqLr07zSErmS6OYhh9KZcSt/kO6lQV5tnrFqIqJVsxwz4kHUjtZXh6DSf9Q==", + "dependencies": { + "core-js": "^3.6.4" + } + }, "node_modules/@nextcloud/router": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-2.0.0.tgz", @@ -17467,6 +17476,14 @@ "node-gettext": "^3.0.0" } }, + "@nextcloud/paths": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-2.1.0.tgz", + "integrity": "sha512-8wX0gqwez0bTuAS8A0OEiqbbp0ZsqLr07zSErmS6OYhh9KZcSt/kO6lQV5tnrFqIqJVsxwz4kHUjtZXh6DSf9Q==", + "requires": { + "core-js": "^3.6.4" + } + }, "@nextcloud/router": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-2.0.0.tgz", diff --git a/package.json b/package.json index f25c892e14..5bed064f57 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "@nextcloud/l10n": "^1.6.0", "@nextcloud/logger": "^2.3.0", "@nextcloud/moment": "^1.2.1", + "@nextcloud/paths": "^2.1.0", "@nextcloud/router": "^2.0.0", "@nextcloud/vue": "^6.0.0-beta.6", "@nextcloud/vue-dashboard": "^2", diff --git a/src/components/AttachmentImageViewer.vue b/src/components/AttachmentImageViewer.vue deleted file mode 100644 index aec7d631eb..0000000000 --- a/src/components/AttachmentImageViewer.vue +++ /dev/null @@ -1,44 +0,0 @@ - - - - - diff --git a/src/components/MessageAttachment.vue b/src/components/MessageAttachment.vue index 8d0567ef82..16beebb3a5 100644 --- a/src/components/MessageAttachment.vue +++ b/src/components/MessageAttachment.vue @@ -20,11 +20,10 @@ -->