From 9f626e3489b78729e6819b7631c1aacf8d198536 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 5 Aug 2018 16:03:47 +0000 Subject: [PATCH] Improved messages fragment --- .../eu/faircode/email/FragmentMessages.java | 57 ++++++------------- 1 file changed, 18 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 17083acc..44b6d750 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -19,7 +19,6 @@ package eu.faircode.email; Copyright 2018 by Marcel Bokhorst (M66B) */ -import android.arch.lifecycle.LiveData; import android.arch.lifecycle.Observer; import android.content.Context; import android.content.Intent; @@ -31,7 +30,6 @@ import android.support.design.widget.FloatingActionButton; import android.support.v4.app.LoaderManager; import android.support.v4.content.AsyncTaskLoader; import android.support.v4.content.Loader; -import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; @@ -51,7 +49,6 @@ public class FragmentMessages extends FragmentEx { private FloatingActionButton fab; private AdapterMessage adapter; - private LiveData liveFolder; @Override @Nullable @@ -59,8 +56,9 @@ public class FragmentMessages extends FragmentEx { View view = inflater.inflate(R.layout.fragment_messages, container, false); // Get arguments - long folder = getArguments().getLong("folder", -1); - long thread = getArguments().getLong("thread", -1); // message ID + Bundle args = getArguments(); + long folder = (args == null ? -1 : args.getLong("folder", -1)); + long thread = (args == null ? -1 : args.getLong("thread", -1)); // message ID // Get controls rvMessage = view.findViewById(R.id.rvFolder); @@ -96,49 +94,30 @@ public class FragmentMessages extends FragmentEx { DB db = DB.getInstance(getContext()); - // Observe folder - liveFolder = (thread < 0 ? DB.getInstance(getContext()).folder().liveFolderEx(folder) : null); - - // Observe messages + // Observe folder/messages if (thread < 0) - if (folder < 0) + if (folder < 0) { + setSubtitle(R.string.title_folder_unified); db.message().liveUnifiedInbox().observe(this, messagesObserver); - else + } else { + DB.getInstance(getContext()).folder().liveFolderEx(folder).observe(this, new Observer() { + @Override + public void onChanged(@Nullable TupleFolderEx folder) { + setSubtitle(folder == null ? null : Helper.localizeFolderName(getContext(), folder.name)); + } + }); db.message().liveMessages(folder).observe(this, messagesObserver); + } else { + setSubtitle(R.string.title_folder_thread); db.message().liveThread(thread).observe(this, messagesObserver); } - return view; - } - - @Override - public void onResume() { - super.onResume(); - if (liveFolder == null) - ((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle(R.string.title_folder_thread); - else - liveFolder.observe(this, folderObserver); - getLoaderManager().restartLoader(ActivityView.LOADER_MESSAGES_INIT, new Bundle(), initLoaderCallbacks).forceLoad(); - } - @Override - public void onPause() { - super.onPause(); - if (liveFolder != null) - liveFolder.removeObservers(this); + return view; } - Observer folderObserver = new Observer() { - @Override - public void onChanged(@Nullable TupleFolderEx folder) { - ((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle(folder.name == null - ? getString(R.string.title_folder_unified) - : Helper.localizeFolderName(getContext(), folder)); - } - }; - Observer> messagesObserver = new Observer>() { @Override public void onChanged(@Nullable List messages) { @@ -147,7 +126,7 @@ public class FragmentMessages extends FragmentEx { pbWait.setVisibility(View.GONE); grpReady.setVisibility(View.VISIBLE); - if (messages.size() == 0) { + if (messages == null || messages.size() == 0) { tvNoEmail.setVisibility(View.VISIBLE); rvMessage.setVisibility(View.GONE); } else { @@ -158,7 +137,7 @@ public class FragmentMessages extends FragmentEx { }; private static class InitLoader extends AsyncTaskLoader { - public InitLoader(@NonNull Context context) { + InitLoader(@NonNull Context context) { super(context); }