Message can change folder

pull/91/head
M66B 7 years ago
parent 87e8e713db
commit a0880c4c06

@ -466,7 +466,7 @@ public class FragmentMessage extends FragmentEx {
grpError.setVisibility(free || message.error == null ? View.GONE : View.VISIBLE);
}
DB db = DB.getInstance(getContext());
final DB db = DB.getInstance(getContext());
// Observe message
db.message().liveMessage(message.id).observe(getViewLifecycleOwner(), new Observer<TupleMessageEx>() {
@ -480,42 +480,25 @@ public class FragmentMessage extends FragmentEx {
}
// Messages are immutable except for flags
FragmentMessage.this.message.seen = message.seen;
FragmentMessage.this.message.ui_seen = message.ui_seen;
FragmentMessage.this.message = message;
setSeen();
}
});
// Observe attachments
db.attachment().liveAttachments(message.id).observe(getViewLifecycleOwner(),
new Observer<List<EntityAttachment>>() {
@Override
public void onChanged(@Nullable List<EntityAttachment> attachments) {
if (attachments == null)
attachments = new ArrayList<>();
// Message count can be changed
getActivity().invalidateOptionsMenu();
adapter.set(attachments);
grpAttachments.setVisibility(!free && attachments.size() > 0 ? View.VISIBLE : View.GONE);
}
});
// Messages can be moved to another folder
setSubtitle(Helper.localizeFolderName(getContext(), message.folderName));
// Observe folders
db.folder().liveFolders(message.account).removeObservers(getViewLifecycleOwner());
db.folder().liveFolders(message.account).observe(getViewLifecycleOwner(), new Observer<List<TupleFolderEx>>() {
@Override
public void onChanged(@Nullable List<TupleFolderEx> folders) {
if (folders == null)
folders = new ArrayList<>();
boolean inInbox = EntityFolder.INBOX.equals(message.folderType);
boolean inOutbox = EntityFolder.OUTBOX.equals(message.folderType);
boolean inArchive = EntityFolder.ARCHIVE.equals(message.folderType);
boolean inTrash = EntityFolder.TRASH.equals(message.folderType);
boolean inJunk = EntityFolder.JUNK.equals(message.folderType);
boolean hasTrash = false;
boolean hasJunk = false;
boolean hasArchive = false;
boolean hasUser = false;
if (folders != null)
for (EntityFolder folder : folders) {
if (EntityFolder.TRASH.equals(folder.type))
@ -528,6 +511,12 @@ public class FragmentMessage extends FragmentEx {
hasUser = true;
}
boolean inInbox = EntityFolder.INBOX.equals(message.folderType);
boolean inOutbox = EntityFolder.OUTBOX.equals(message.folderType);
boolean inArchive = EntityFolder.ARCHIVE.equals(message.folderType);
boolean inTrash = EntityFolder.TRASH.equals(message.folderType);
boolean inJunk = EntityFolder.JUNK.equals(message.folderType);
bottom_navigation.setTag(inTrash || !hasTrash || inOutbox);
bottom_navigation.getMenu().findItem(R.id.action_spam).setVisible(message.uid != null && !inArchive && !inJunk && hasJunk);
@ -539,6 +528,22 @@ public class FragmentMessage extends FragmentEx {
}
});
}
});
// Observe attachments
db.attachment().liveAttachments(message.id).observe(getViewLifecycleOwner(),
new Observer<List<EntityAttachment>>() {
@Override
public void onChanged(@Nullable List<EntityAttachment> attachments) {
if (attachments == null)
attachments = new ArrayList<>();
adapter.set(attachments);
grpAttachments.setVisibility(!free && attachments.size() > 0 ? View.VISIBLE : View.GONE);
}
});
}
private void setSeen() {
int typeface = (message.ui_seen ? Typeface.NORMAL : Typeface.BOLD);

Loading…
Cancel
Save