diff --git a/static/js/emailLibrary.js b/static/js/emailLibrary.js
index 0c6352d15..f29f798dd 100644
--- a/static/js/emailLibrary.js
+++ b/static/js/emailLibrary.js
@@ -2428,15 +2428,15 @@ async function _toggleCardPreview(card, em) {
${_hasMultipleRecipients(data) ? `` : ''}
-
-
-
-
+
+
+
+
${attsHtml}
@@ -4278,15 +4278,15 @@ async function _openEmailWindow(em, folder) {
${_hasMultipleRecipients(data) ? `` : ''}
-
-
-
-
+
+
+
+
${attsHtml}
@@ -4657,7 +4657,13 @@ function _showReaderMoreMenu(em, card, reader, anchor) {
},
},
{
- label: em.is_read ? 'Mark Unread' : 'Mark Read',
+ label: 'Remind to reply',
+ icon: _bellIcon,
+ submenu: 'remind',
+ },
+ { separator: true },
+ {
+ label: em.is_read ? 'Mark as Unread' : 'Mark as Read',
icon: _unreadIcon,
action: async () => {
const newRead = !em.is_read;
@@ -4673,11 +4679,33 @@ function _showReaderMoreMenu(em, card, reader, anchor) {
},
},
{
- label: 'Remind to reply',
- icon: _bellIcon,
- submenu: 'remind',
+ label: em.is_answered ? 'Mark as Not Done' : 'Mark as Done',
+ icon: _checkIcon,
+ action: async () => {
+ const newState = !em.is_answered;
+ em.is_answered = newState;
+ if (newState) _syncEmailReadState(em.uid, true);
+ try {
+ if (newState) {
+ await fetch(`${API_BASE}/api/email/mark-answered/${em.uid}?folder=${encodeURIComponent(state._libFolder)}${_acct()}`, { method: 'POST' });
+ await fetch(`${API_BASE}/api/email/mark-read/${em.uid}?folder=${encodeURIComponent(state._libFolder)}${_acct()}`, { method: 'POST' });
+ } else {
+ await fetch(`${API_BASE}/api/email/clear-answered/${em.uid}?folder=${encodeURIComponent(state._libFolder)}${_acct()}`, { method: 'POST' });
+ }
+ } catch (e) { console.error('Failed to toggle done:', e); }
+ _renderGrid();
+ },
+ },
+ {
+ label: 'Move to Archive',
+ icon: _archIcon,
+ action: async () => {
+ try {
+ await fetch(`${API_BASE}/api/email/archive/${em.uid}?folder=${encodeURIComponent(state._libFolder)}${_acct()}`, { method: 'POST' });
+ } catch (e) { console.error(e); }
+ await closeAndRemove();
+ },
},
- { separator: true },
{
// Save the sender to CardDAV contacts. Pulls name + address off the
// list-item (em); falls back to splitting the local-part for a name.
@@ -4708,34 +4736,6 @@ function _showReaderMoreMenu(em, card, reader, anchor) {
}
},
},
- {
- label: em.is_answered ? 'Not Done' : 'Done',
- icon: _checkIcon,
- action: async () => {
- const newState = !em.is_answered;
- em.is_answered = newState;
- if (newState) _syncEmailReadState(em.uid, true);
- try {
- if (newState) {
- await fetch(`${API_BASE}/api/email/mark-answered/${em.uid}?folder=${encodeURIComponent(state._libFolder)}${_acct()}`, { method: 'POST' });
- await fetch(`${API_BASE}/api/email/mark-read/${em.uid}?folder=${encodeURIComponent(state._libFolder)}${_acct()}`, { method: 'POST' });
- } else {
- await fetch(`${API_BASE}/api/email/clear-answered/${em.uid}?folder=${encodeURIComponent(state._libFolder)}${_acct()}`, { method: 'POST' });
- }
- } catch (e) { console.error('Failed to toggle done:', e); }
- _renderGrid();
- },
- },
- {
- label: 'Archive',
- icon: _archIcon,
- action: async () => {
- try {
- await fetch(`${API_BASE}/api/email/archive/${em.uid}?folder=${encodeURIComponent(state._libFolder)}${_acct()}`, { method: 'POST' });
- } catch (e) { console.error(e); }
- await closeAndRemove();
- },
- },
{ separator: true },
{
label: 'Move to Spam',