2022-10-12 20:06:11 +08:00
|
|
|
(rl => {
|
2022-10-14 19:48:37 +08:00
|
|
|
|
|
|
|
function browseFiles(path = '/')
|
|
|
|
{
|
|
|
|
rl.ncFiles.getDirectoryContents(path).then(elemList => {
|
|
|
|
console.dir(elemList);
|
|
|
|
}).catch(err => console.error(err))
|
|
|
|
}
|
|
|
|
|
2022-10-13 00:45:26 +08:00
|
|
|
addEventListener('rl-view-model.create', e => {
|
|
|
|
if ('MailMessageView' === e.detail.viewModelTemplateID) {
|
|
|
|
let view = e.detail;
|
|
|
|
view.saveNextcloudError = ko.observable(false).extend({ falseTimeout: 7000 });
|
|
|
|
view.saveNextcloudLoading = ko.observable(false);
|
|
|
|
view.saveNextcloud = () => {
|
|
|
|
const
|
|
|
|
hashes = (view.message()?.attachments || [])
|
|
|
|
.map(item => item?.checked() /*&& !item?.isLinked()*/ ? item.download : '')
|
|
|
|
.filter(v => v);
|
|
|
|
if (hashes.length) {
|
2022-10-13 00:49:09 +08:00
|
|
|
view.saveNextcloudLoading(true);
|
2022-10-13 00:45:26 +08:00
|
|
|
rl.fetchJSON('./?/Json/&q[]=/0/', {}, {
|
|
|
|
Action: 'AttachmentsActions',
|
|
|
|
Do: 'nextcloud',
|
|
|
|
Hashes: hashes
|
|
|
|
})
|
|
|
|
.then(result => {
|
2022-10-13 00:49:09 +08:00
|
|
|
view.saveNextcloudLoading(false);
|
2022-10-13 00:45:26 +08:00
|
|
|
if (result?.Result) {
|
|
|
|
// success
|
|
|
|
} else {
|
|
|
|
view.saveNextcloudError(true);
|
|
|
|
}
|
|
|
|
})
|
2022-10-13 00:49:09 +08:00
|
|
|
.catch(() => {
|
|
|
|
view.saveNextcloudLoading(false);
|
|
|
|
view.saveNextcloudError(true);
|
|
|
|
});
|
2022-10-13 00:45:26 +08:00
|
|
|
}
|
|
|
|
};
|
2022-10-13 20:07:04 +08:00
|
|
|
|
|
|
|
view.nextcloudSaveMsg = () => {
|
|
|
|
let msg = view.message();
|
2022-10-14 19:48:37 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* TODO: op select screen to show browseFiles result
|
|
|
|
* Then the user can select which Nextcloud folder to save to
|
|
|
|
*/
|
2022-10-19 01:21:27 +08:00
|
|
|
// browseFiles();
|
2022-10-14 19:48:37 +08:00
|
|
|
|
2022-10-13 20:07:04 +08:00
|
|
|
rl.pluginRemoteRequest(
|
|
|
|
(iError, data) => {
|
|
|
|
console.dir({
|
|
|
|
iError:iError,
|
|
|
|
data:data
|
|
|
|
});
|
|
|
|
},
|
|
|
|
'NextcloudSaveMsg',
|
|
|
|
{
|
|
|
|
'msgHash': msg.requestHash,
|
|
|
|
'filename': msg.subject()
|
|
|
|
}
|
|
|
|
);
|
|
|
|
};
|
2022-10-12 20:06:11 +08:00
|
|
|
}
|
2022-10-13 00:45:26 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
let template = document.getElementById('MailMessageView');
|
2022-10-13 20:07:04 +08:00
|
|
|
|
2022-10-13 00:45:26 +08:00
|
|
|
const attachmentsControls = template.content.querySelector('.attachmentsControls');
|
|
|
|
if (attachmentsControls) {
|
|
|
|
attachmentsControls.append(Element.fromHTML('<span>'
|
|
|
|
+ '<i class="fontastic iconcolor-red" data-bind="visible: saveNextcloudError">✖</i>'
|
|
|
|
+ '<i class="fontastic" data-bind="visible: !saveNextcloudError(), css: {\'icon-spinner\': saveNextcloudLoading()}">💾</i>'
|
2022-10-13 20:07:04 +08:00
|
|
|
+ '<span class="g-ui-link" data-bind="click: saveNextcloud" data-i18n="NEXTCLOUD/SAVE_ATTACHMENTS"></span>'
|
2022-10-13 00:45:26 +08:00
|
|
|
+ '</span>'));
|
2022-10-12 20:06:11 +08:00
|
|
|
}
|
2022-10-13 02:14:30 +08:00
|
|
|
|
2022-10-13 20:07:04 +08:00
|
|
|
const msgMenu = template.content.querySelector('#more-view-dropdown-id + menu');
|
|
|
|
if (msgMenu) {
|
|
|
|
msgMenu.append(Element.fromHTML('<li role="presentation">'
|
|
|
|
+ '<a href="#" tabindex="-1" data-icon="📥" data-bind="click: nextcloudSaveMsg" data-i18n="NEXTCLOUD/SAVE_EML"></a>'
|
|
|
|
+ '</li>'));
|
|
|
|
}
|
2022-10-13 02:14:30 +08:00
|
|
|
|
2022-10-12 20:06:11 +08:00
|
|
|
})(window.rl);
|