Activate simple Nextcloud directory selector popup #96

This commit is contained in:
the-djmaze 2022-10-19 10:15:03 +02:00
parent 5abc6a3034
commit f53dab1baa
5 changed files with 131 additions and 66 deletions

View file

@ -1,12 +1,5 @@
(rl => {
function browseFiles(path = '/')
{
rl.ncFiles.getDirectoryContents(path).then(elemList => {
console.dir(elemList);
}).catch(err => console.error(err))
}
addEventListener('rl-view-model.create', e => {
if ('MailMessageView' === e.detail.viewModelTemplateID) {
let view = e.detail;
@ -19,48 +12,49 @@
.filter(v => v);
if (hashes.length) {
view.saveNextcloudLoading(true);
rl.fetchJSON('./?/Json/&q[]=/0/', {}, {
Action: 'AttachmentsActions',
Do: 'nextcloud',
Hashes: hashes
})
.then(result => {
view.saveNextcloudLoading(false);
if (result?.Result) {
// success
} else {
view.saveNextcloudError(true);
rl.ncFiles.selectFolder().then(folder => {
if (folder) {
rl.fetchJSON('./?/Json/&q[]=/0/', {}, {
Action: 'AttachmentsActions',
Do: 'nextcloud',
Hashes: hashes,
NcFolder: folder
})
.then(result => {
view.saveNextcloudLoading(false);
if (result?.Result) {
// success
} else {
view.saveNextcloudError(true);
}
})
.catch(() => {
view.saveNextcloudLoading(false);
view.saveNextcloudError(true);
});
}
})
.catch(() => {
view.saveNextcloudLoading(false);
view.saveNextcloudError(true);
});
}
};
view.nextcloudSaveMsg = () => {
let msg = view.message();
/**
* TODO: op select screen to show browseFiles result
* Then the user can select which Nextcloud folder to save to
*/
// browseFiles();
rl.pluginRemoteRequest(
(iError, data) => {
console.dir({
iError:iError,
data:data
});
},
'NextcloudSaveMsg',
{
'msgHash': msg.requestHash,
'filename': msg.subject()
}
);
rl.ncFiles.selectFolder().then(folder => {
let msg = view.message();
folder && rl.pluginRemoteRequest(
(iError, data) => {
console.dir({
iError:iError,
data:data
});
},
'NextcloudSaveMsg',
{
'msgHash': msg.requestHash,
'folder': folder,
'filename': msg.subject()
}
);
});
};
}
});

View file

@ -96,14 +96,39 @@
});
}
onShow(files, fResolve) {
this.files(!!files);
this.fResolve = fResolve;
onBuild(dom) {
this.tree = dom.querySelector('#sm-nc-files-tree');
this.tree.addEventListener('click', event => {
let li = event.target.closest('li');
if (li.item_name) {
this.close();
this.fResolve(li.item_name);
}
});
}
select() {
this.close();
this.fResolve(this.folder());
// Happens after showModal()
beforeShow(files, fResolve) {
this.files(!!files);
this.fResolve = fResolve;
this.tree.innerHTML = '';
fetchFiles(propertyRequestBody, '/').then(items => {
items.forEach(item => {
if (item.isFile) {
if (files) {
// TODO show files
}
} else {
let li = document.createElement('li'),
a = document.createElement('a');
li.item_name = item.name;
a.append('- ' + item.name.replace(/^\/+/, ''));
li.append(a);
this.tree.append(li);
}
});
}).catch(err => console.error(err))
}
onClose() {
@ -111,6 +136,14 @@
this.fResolve();
return false;
}
/*
onShow() {} // Happens after showModal()
beforeShow() {} // Happens before showModal()
afterShow() {} // Happens after showModal() animation transitionend
onHide() {} // Happens before animation transitionend
afterHide() {} // Happens after animation transitionend
close() {}
*/
}
rl.ncFiles = new class {