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

Loading…
Cancel
Save