From 927bc00194a99cc790ff7b178e56de33df9e8e6b Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Fri, 28 Mar 2025 12:12:13 +0100 Subject: [PATCH] Added new actions --- frontend/src/api/webmail.js | 35 +++- frontend/src/views/webmail/EmailView.vue | 231 ++++++++++++++++++++--- modoboa/webmail/lib/__init__.py | 3 +- modoboa/webmail/lib/imapemail.py | 3 +- modoboa/webmail/serializers.py | 27 ++- modoboa/webmail/viewsets.py | 70 ++++++- 6 files changed, 336 insertions(+), 33 deletions(-) diff --git a/frontend/src/api/webmail.js b/frontend/src/api/webmail.js index 5edbbe293..9e2b0bc44 100644 --- a/frontend/src/api/webmail.js +++ b/frontend/src/api/webmail.js @@ -15,11 +15,44 @@ export default { } return repository.get(`/webmail/emails/`, { params }) }, - getEmailContent(mailbox, mailid) { + getEmailContent(mailbox, mailid, options) { const params = { mailbox, mailid, + ...options, } return repository.get(`/webmail/emails/content/`, { params }) }, + getEmailAttachment(mailbox, mailid, partnum) { + const params = { + mailbox, + mailid, + partnum, + } + return repository.get(`/webmail/emails/attachment/`, { + params, + responseType: 'blob', + }) + }, + deleteSelection(mailbox, selection) { + const body = { + mailbox, + selection, + } + return repository.post('/webmail/emails/delete/', body) + }, + markSelectionAsJunk(mailbox, selection) { + const body = { + mailbox, + selection, + } + return repository.post('/webmail/emails/mark_as_junk/', body) + }, + markSelectionAsNotJunk(mailbox, selection) { + const body = { + mailbox, + selection, + } + return repository.post('/webmail/emails/mark_as_not_junk/', body) + }, } diff --git a/frontend/src/views/webmail/EmailView.vue b/frontend/src/views/webmail/EmailView.vue index bdbae8a1b..278dbfa31 100644 --- a/frontend/src/views/webmail/EmailView.vue +++ b/frontend/src/views/webmail/EmailView.vue @@ -1,43 +1,221 @@