|
|
@ -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);
|
|
|
|