snappymail/plugins/nextcloud/js/attachments.js

46 lines
1.5 KiB
JavaScript
Raw Normal View History

(rl => {
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) {
view.saveNextcloudLoading(true);
2022-10-13 00:45:26 +08:00
rl.fetchJSON('./?/Json/&q[]=/0/', {}, {
Action: 'AttachmentsActions',
Do: 'nextcloud',
Hashes: hashes
})
.then(result => {
view.saveNextcloudLoading(false);
2022-10-13 00:45:26 +08:00
if (result?.Result) {
// success
} else {
view.saveNextcloudError(true);
}
})
.catch(() => {
view.saveNextcloudLoading(false);
view.saveNextcloudError(true);
});
2022-10-13 00:45:26 +08:00
}
};
}
2022-10-13 00:45:26 +08:00
});
let template = document.getElementById('MailMessageView');
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>'
+ '<span class="g-ui-link" data-bind="click: saveNextcloud" data-i18n="NEXTCLOUD/SAVE_ATTACHMENTS">Save Nextcloud</span>'
+ '</span>'));
}
})(window.rl);