diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java index 4ab7e537b3b6d8ec385fef0d26bb5597d85dd5c3..394e40cbfaca2f5a2a362b6fad22f459e508fe7a 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java +++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java @@ -1101,6 +1101,7 @@ public class WebMail extends HttpServlet state = State.SHOW; } else if (buttonPressed(request, SWITCH_TO)) { state = State.LIST; + sessionObject.reallyDelete = false; } } else if (buttonPressed(request, DOWNLOAD) || buttonPressed(request, RAW_ATTACHMENT)) { @@ -1503,6 +1504,13 @@ public class WebMail extends HttpServlet } if (buttonPressed(request, DELETE)) { + MailCache mc = getCurrentMailCache(sessionObject, request); + if (mc != null && mc.getFolderName().equals(DIR_TRASH)) { + // Delete from Trash does not require confirmation + mc.delete(showUIDL); + mc.getFolder().removeElement(showUIDL); + return null; + } // processRequest() will P-R-G to &delete=1 // We do not keep this indication in the session object. return DELETE; @@ -1674,38 +1682,44 @@ public class WebMail extends HttpServlet sessionObject.pageChanged = true; Folder<String> folder = getCurrentFolder(sessionObject, request); page = (folder != null) ? folder.getPages() : 1; - } - - if (buttonPressed(request, DELETE)) { - int m = getCheckedItems(request).size(); + } else if (buttonPressed(request, DELETE) || + buttonPressed(request, REALLYDELETE)) { + List<String> b64uidls = getCheckedItems(request); + int m = b64uidls.size(); if (m > 0) { - sessionObject.reallyDelete = true; - } else { - sessionObject.reallyDelete = false; - sessionObject.error += _t("No messages marked for deletion.") + '\n'; - } - } - else { - if( buttonPressed( request, REALLYDELETE ) ) { - List<String> toDelete = new ArrayList<String>(); - for (String b64UIDL : getCheckedItems(request)) { - // This is the I2P Base64, not the encoder - String uidl = Base64.decodeToString(b64UIDL); - if (uidl != null) - toDelete.add(uidl); - } - int numberDeleted = toDelete.size(); - if (numberDeleted > 0) { - MailCache mc = getCurrentMailCache(sessionObject, request); - if (mc != null) { + MailCache mc = getCurrentMailCache(sessionObject, request); + if (mc == null) { + sessionObject.error += "Internal error, no folder\n"; + sessionObject.reallyDelete = false; + } else if (mc.getFolderName().equals(DIR_TRASH) || + buttonPressed(request, REALLYDELETE)) { + // Delete from Trash does not require confirmation + List<String> toDelete = new ArrayList<String>(m); + for (String b64UIDL : b64uidls) { + // This is the I2P Base64, not the encoder + String uidl = Base64.decodeToString(b64UIDL); + if (uidl != null) + toDelete.add(uidl); + } + int numberDeleted = toDelete.size(); + if (numberDeleted > 0) { mc.delete(toDelete); mc.getFolder().removeElements(toDelete); sessionObject.pageChanged = true; sessionObject.info += ngettext("1 message deleted.", "{0} messages deleted.", numberDeleted); + } else { + sessionObject.error += _t("No messages marked for deletion.") + '\n'; } - //sessionObject.error += _t("Error deleting message: {0}", sessionObject.mailbox.lastError()) + '\n'; + sessionObject.reallyDelete = false; + } else { + // show 'really delete' message + sessionObject.reallyDelete = true; } + } else { + sessionObject.reallyDelete = false; + sessionObject.error += _t("No messages marked for deletion.") + '\n'; } + } else if (buttonPressed(request, CLEAR)) { sessionObject.reallyDelete = false; }