From aeabb16808c366bf8c29fe0ed72e245fe8ca8367 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 24 Oct 2022 16:12:35 +0200 Subject: [PATCH] Save multiple .EML to Nextcloud Files storage https://github.com/the-djmaze/snappymail/issues/569#issuecomment-1287030832 --- plugins/nextcloud/index.php | 4 ++- plugins/nextcloud/js/messagelist.js | 40 +++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 plugins/nextcloud/js/messagelist.js diff --git a/plugins/nextcloud/index.php b/plugins/nextcloud/index.php index d46028558..ca0bf7350 100644 --- a/plugins/nextcloud/index.php +++ b/plugins/nextcloud/index.php @@ -23,9 +23,11 @@ class NextcloudPlugin extends \RainLoop\Plugins\AbstractPlugin $this->addJs('js/message.js'); $this->addHook('json.attachments', 'DoAttachmentsActions'); $this->addJsonHook('NextcloudSaveMsg', 'NextcloudSaveMsg'); - $this->addJsonHook('NextcloudAttachFile', 'NextcloudAttachFile'); $this->addJs('js/composer.js'); + $this->addJsonHook('NextcloudAttachFile', 'NextcloudAttachFile'); + + $this->addJs('js/messagelist.js'); $this->addTemplate('templates/PopupsNextcloudFiles.html'); } diff --git a/plugins/nextcloud/js/messagelist.js b/plugins/nextcloud/js/messagelist.js new file mode 100644 index 000000000..398b40c78 --- /dev/null +++ b/plugins/nextcloud/js/messagelist.js @@ -0,0 +1,40 @@ +(rl => { +// if (rl.settings.get('Nextcloud')) + + addEventListener('rl-view-model.create', e => { + if ('MailMessageList' === e.detail.viewModelTemplateID) { + let view = e.detail; + view.nextcloudSaveMsgs = () => { + view.messageList.hasChecked() + && rl.ncFiles.selectFolder().then(folder => { + folder && view.messageList.forEach(msg => { + msg.checked() && rl.pluginRemoteRequest( + (iError, data) => { + console.dir({ + iError:iError, + data:data + }); + }, + 'NextcloudSaveMsg', + { + 'msgHash': msg.requestHash, + 'folder': folder, + 'filename': msg.subject() + } + ); + }); + }); + }; + } + }); + + let template = document.getElementById('MailMessageList'); + + const msgMenu = template.content.querySelector('#more-list-dropdown-id + menu [data-bind*="forwardCommand"]'); + if (msgMenu) { + msgMenu.after(Element.fromHTML('
  • ' + + '' + + '
  • ')); + } + +})(window.rl);