From a41afb17ad17cf73851dfd855e7fabd201fce4fe Mon Sep 17 00:00:00 2001
From: the-djmaze <>
Date: Tue, 18 Oct 2022 19:21:27 +0200
Subject: [PATCH] Resolve Nextcloud save issue and added mockup code for files
browser
https://github.com/the-djmaze/snappymail/issues/96#issuecomment-1282589485
---
plugins/nextcloud/index.php | 6 ++-
plugins/nextcloud/js/message.js | 2 +-
plugins/nextcloud/js/webdav.js | 44 +++++++++++++++++++
.../templates/PopupsNextcloudFiles.html | 12 +++++
4 files changed, 61 insertions(+), 3 deletions(-)
create mode 100644 plugins/nextcloud/templates/PopupsNextcloudFiles.html
diff --git a/plugins/nextcloud/index.php b/plugins/nextcloud/index.php
index 41426269e..80a0a077c 100644
--- a/plugins/nextcloud/index.php
+++ b/plugins/nextcloud/index.php
@@ -4,8 +4,8 @@ class NextcloudPlugin extends \RainLoop\Plugins\AbstractPlugin
{
const
NAME = 'Nextcloud',
- VERSION = '2.3',
- RELEASE = '2022-10-18',
+ VERSION = '2.4',
+ RELEASE = '2022-10-19',
CATEGORY = 'Integrations',
DESCRIPTION = 'Integrate with Nextcloud v20+',
REQUIRED = '2.19.0';
@@ -21,6 +21,8 @@ class NextcloudPlugin extends \RainLoop\Plugins\AbstractPlugin
$this->addJs('js/message.js');
$this->addHook('json.attachments', 'DoAttachmentsActions');
$this->addJsonHook('NextcloudSaveMsg', 'NextcloudSaveMsg');
+
+ $this->addTemplate('templates/PopupsNextcloudFiles.html');
}
}
diff --git a/plugins/nextcloud/js/message.js b/plugins/nextcloud/js/message.js
index 681b85fdb..e3fa2f2a7 100644
--- a/plugins/nextcloud/js/message.js
+++ b/plugins/nextcloud/js/message.js
@@ -46,7 +46,7 @@
* TODO: op select screen to show browseFiles result
* Then the user can select which Nextcloud folder to save to
*/
- browseFiles();
+// browseFiles();
rl.pluginRemoteRequest(
(iError, data) => {
diff --git a/plugins/nextcloud/js/webdav.js b/plugins/nextcloud/js/webdav.js
index 95caea3c5..2ae2d0426 100644
--- a/plugins/nextcloud/js/webdav.js
+++ b/plugins/nextcloud/js/webdav.js
@@ -87,9 +87,53 @@
});
}
+ class NextcloudFilesPopupView extends rl.pluginPopupView {
+ constructor() {
+ super('NextcloudFiles');
+ this.addObservables({
+ folder: '',
+ files: false
+ });
+ }
+
+ onShow(files, fResolve) {
+ this.files(!!files);
+ this.fResolve = fResolve;
+ }
+
+ select() {
+ this.close();
+ this.fResolve(this.folder());
+ }
+
+ onClose() {
+ this.close();
+ this.fResolve();
+ return false;
+ }
+ }
+
rl.ncFiles = new class {
async getDirectoryContents(path) {
return await fetchFiles(propertyRequestBody, path);
}
+
+ selectFolder() {
+ return new Promise(resolve => {
+ NextcloudFilesPopupView.showModal([
+ false,
+ folder => resolve(folder),
+ ]);
+ });
+ }
+
+ selectFiles() {
+ return new Promise(resolve => {
+ NextcloudFilesPopupView.showModal([
+ true,
+ files => resolve(files),
+ ]);
+ });
+ }
}
})(window.rl);
diff --git a/plugins/nextcloud/templates/PopupsNextcloudFiles.html b/plugins/nextcloud/templates/PopupsNextcloudFiles.html
new file mode 100644
index 000000000..e0ac608be
--- /dev/null
+++ b/plugins/nextcloud/templates/PopupsNextcloudFiles.html
@@ -0,0 +1,12 @@
+