SusiMail: Show result after server check (ticket #2087)

This commit is contained in:
zzz
2017-12-16 16:12:34 +00:00
parent 0430323d2a
commit 71640590bc
2 changed files with 17 additions and 14 deletions

View File

@@ -218,7 +218,7 @@ public class Folder<O extends Object> {
* @return true if added
*/
public boolean addElement(O element) {
return addElements(Collections.singletonList(element));
return addElements(Collections.singletonList(element)) > 0;
}
/**
@@ -226,11 +226,11 @@ public class Folder<O extends Object> {
* Re-sorts the array if a sorter is set and any elements are actually added.
*
* @param elems to add
* @return true if any were added
* @return number added
*/
@SuppressWarnings("unchecked")
public synchronized boolean addElements(List<O> elems) {
boolean shouldUpdate = false;
public synchronized int addElements(List<O> elems) {
int added = 0;
if (elements != null) {
// delay copy until required
List<O> list = null;
@@ -245,19 +245,19 @@ public class Folder<O extends Object> {
if (!found) {
if (list == null) {
list = new ArrayList<O>(Arrays.asList(elements));
shouldUpdate = true;
}
list.add(e);
}
}
if (shouldUpdate) {
if (list != null) {
added = list.size() - elements.length;
setElements((O[]) list.toArray(new Object[list.size()]));
}
} else if (!elems.isEmpty()) {
setElements((O[]) (elems.toArray(new Object[elems.size()])));
shouldUpdate = true;
added = elems.size();
setElements((O[]) (elems.toArray(new Object[added])));
}
return shouldUpdate;
return added;
}
/**

View File

@@ -1235,14 +1235,17 @@ public class WebMail extends HttpServlet
sessionObject.error += _t("Internal error, lost connection.") + '\n';
return State.AUTH;
}
// TODO how to do a "No new mail" message?
mailbox.refresh();
sessionObject.error += mailbox.lastError();
String error = mailbox.lastError();
sessionObject.error += error;
sessionObject.mailCache.getMail(MailCache.FetchMode.HEADER);
// get through cache so we have the disk-only ones too
String[] uidls = sessionObject.mailCache.getUIDLs();
if (uidls != null)
sessionObject.folder.addElements(Arrays.asList(uidls));
int added = sessionObject.folder.addElements(Arrays.asList(uidls));
if (added > 0)
sessionObject.info += ngettext("{0} new message", "{0} new messages", added);
else if (error.length() <= 0)
sessionObject.info += _t("No new messages");
sessionObject.pageChanged = true;
}
return state;
@@ -1886,7 +1889,7 @@ public class WebMail extends HttpServlet
// get through cache so we have the disk-only ones too
String[] uidls = sessionObject.mailCache.getUIDLs();
if (folder.addElements(Arrays.asList(uidls))) {
if (folder.addElements(Arrays.asList(uidls)) > 0) {
// we added elements, so it got sorted
} else {
// check for changed sort