Auto close conversations

pull/146/head
M66B 7 years ago
parent 94421c1e9a
commit ec4e1d2400

@ -89,6 +89,7 @@ public class FragmentMessages extends FragmentEx {
private AdapterMessage.ViewType viewType; private AdapterMessage.ViewType viewType;
private LiveData<PagedList<TupleMessageEx>> messages = null; private LiveData<PagedList<TupleMessageEx>> messages = null;
private int autoCount = 0;
private boolean autoExpand = true; private boolean autoExpand = true;
private List<Long> expanded = new ArrayList<>(); private List<Long> expanded = new ArrayList<>();
private List<Long> headers = new ArrayList<>(); private List<Long> headers = new ArrayList<>();
@ -827,10 +828,10 @@ public class FragmentMessages extends FragmentEx {
return; return;
} }
if (viewType == AdapterMessage.ViewType.THREAD && autoExpand) { if (viewType == AdapterMessage.ViewType.THREAD)
if (autoExpand) {
autoExpand = false; autoExpand = false;
int count = 0;
int unseen = 0; int unseen = 0;
TupleMessageEx single = null; TupleMessageEx single = null;
TupleMessageEx see = null; TupleMessageEx see = null;
@ -838,7 +839,7 @@ public class FragmentMessages extends FragmentEx {
TupleMessageEx message = messages.get(i); TupleMessageEx message = messages.get(i);
if (!EntityFolder.ARCHIVE.equals(message.folderType) && if (!EntityFolder.ARCHIVE.equals(message.folderType) &&
!EntityFolder.SENT.equals(message.folderType)) { !EntityFolder.SENT.equals(message.folderType)) {
count++; autoCount++;
single = message; single = message;
if (!message.ui_seen) { if (!message.ui_seen) {
unseen++; unseen++;
@ -847,8 +848,12 @@ public class FragmentMessages extends FragmentEx {
} }
} }
// Auto expand when:
// - single, non archived/sent message
// - one unread, non archived/sent message in conversation
TupleMessageEx expand = null; TupleMessageEx expand = null;
if (count == 1) if (autoCount == 1)
expand = single; expand = single;
else if (unseen == 1) else if (unseen == 1)
expand = see; expand = see;
@ -857,6 +862,23 @@ public class FragmentMessages extends FragmentEx {
expanded.add(expand.id); expanded.add(expand.id);
handleExpand(expand.id); handleExpand(expand.id);
} }
} else {
if (autoCount > 0) {
int count = 0;
for (int i = 0; i < messages.size(); i++) {
TupleMessageEx message = messages.get(i);
if (!EntityFolder.ARCHIVE.equals(message.folderType) &&
!EntityFolder.SENT.equals(message.folderType)) {
count++;
}
}
// Auto close when:
// - no more non archived/sent messages
if (count == 0)
finish();
}
} }
Log.i(Helper.TAG, "Submit messages=" + messages.size()); Log.i(Helper.TAG, "Submit messages=" + messages.size());

Loading…
Cancel
Save