Filtered archived messages from conversations

pull/175/head
M66B 6 years ago
parent a15a10a8a1
commit 715170fc91

@ -1160,6 +1160,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
args.putLong("account", intent.getLongExtra("account", -1)); args.putLong("account", intent.getLongExtra("account", -1));
args.putString("thread", intent.getStringExtra("thread")); args.putString("thread", intent.getStringExtra("thread"));
args.putLong("id", intent.getLongExtra("id", -1)); args.putLong("id", intent.getLongExtra("id", -1));
args.putBoolean("filter_archive", intent.getBooleanExtra("filter_archive", true));
args.putBoolean("found", found); args.putBoolean("found", found);
FragmentMessages fragment = new FragmentMessages(); FragmentMessages fragment = new FragmentMessages();

@ -2385,6 +2385,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
.putExtra("account", message.account) .putExtra("account", message.account)
.putExtra("thread", message.thread) .putExtra("thread", message.thread)
.putExtra("id", message.id) .putExtra("id", message.id)
.putExtra("filter_archive", !EntityFolder.ARCHIVE.equals(message.folderType))
.putExtra("found", viewType == ViewType.SEARCH); .putExtra("found", viewType == ViewType.SEARCH);
boolean doubletap = prefs.getBoolean("doubletap", false); boolean doubletap = prefs.getBoolean("doubletap", false);

@ -179,6 +179,7 @@ public interface DaoMessage {
" WHERE message.account = :account" + " WHERE message.account = :account" +
" AND message.thread = :thread" + " AND message.thread = :thread" +
" AND (:id IS NULL OR message.id = :id)" + " AND (:id IS NULL OR message.id = :id)" +
" AND (NOT :filter_archive OR folder.type <> '" + EntityFolder.ARCHIVE + "')" +
" AND (NOT message.ui_hide OR :debug)" + " AND (NOT message.ui_hide OR :debug)" +
" ORDER BY CASE WHEN :ascending THEN message.received ELSE -message.received END" + " ORDER BY CASE WHEN :ascending THEN message.received ELSE -message.received END" +
", CASE" + ", CASE" +
@ -193,7 +194,10 @@ public interface DaoMessage {
" WHEN folder.type = '" + EntityFolder.ARCHIVE + "' THEN 9" + " WHEN folder.type = '" + EntityFolder.ARCHIVE + "' THEN 9" +
" ELSE 999 END") " ELSE 999 END")
// The folder type sort order should match the duplicate algorithm // The folder type sort order should match the duplicate algorithm
DataSource.Factory<Integer, TupleMessageEx> pagedThread(long account, String thread, Long id, boolean ascending, boolean debug); DataSource.Factory<Integer, TupleMessageEx> pagedThread(
long account, String thread, Long id,
boolean filter_archive,
boolean ascending, boolean debug);
@Query("SELECT account.name AS accountName" + @Query("SELECT account.name AS accountName" +
", COUNT(message.id) AS count" + ", COUNT(message.id) AS count" +

@ -246,6 +246,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
private boolean server; private boolean server;
private String thread; private String thread;
private long id; private long id;
private boolean filter_archive;
private boolean found; private boolean found;
private String query; private String query;
private boolean pane; private boolean pane;
@ -349,6 +350,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
server = args.getBoolean("server", false); server = args.getBoolean("server", false);
thread = args.getString("thread"); thread = args.getString("thread");
id = args.getLong("id", -1); id = args.getLong("id", -1);
filter_archive = args.getBoolean("filter_archive", true);
found = args.getBoolean("found", false); found = args.getBoolean("found", false);
query = args.getString("query"); query = args.getString("query");
pane = args.getBoolean("pane", false); pane = args.getBoolean("pane", false);
@ -3711,7 +3713,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
ViewModelMessages.Model vmodel = model.getModel( ViewModelMessages.Model vmodel = model.getModel(
getContext(), getViewLifecycleOwner(), getContext(), getViewLifecycleOwner(),
viewType, type, account, folder, thread, id, query, server); viewType, type, account, folder, thread, id, filter_archive, query, server);
vmodel.setCallback(getViewLifecycleOwner(), callback); vmodel.setCallback(getViewLifecycleOwner(), callback);
vmodel.setObserver(getViewLifecycleOwner(), observer); vmodel.setObserver(getViewLifecycleOwner(), observer);

@ -60,10 +60,10 @@ public class ViewModelMessages extends ViewModel {
final Context context, final LifecycleOwner owner, final Context context, final LifecycleOwner owner,
final AdapterMessage.ViewType viewType, final AdapterMessage.ViewType viewType,
String type, long account, long folder, String type, long account, long folder,
String thread, long id, String thread, long id, boolean filter_archive,
String query, boolean server) { String query, boolean server) {
Args args = new Args(context, viewType, type, account, folder, thread, id, query, server); Args args = new Args(context, viewType, type, account, folder, thread, id, filter_archive, query, server);
Log.d("Get model=" + viewType + " " + args); Log.d("Get model=" + viewType + " " + args);
dump(); dump();
@ -127,6 +127,7 @@ public class ViewModelMessages extends ViewModel {
db.message().pagedThread( db.message().pagedThread(
args.account, args.thread, args.account, args.thread,
args.threading ? null : args.id, args.threading ? null : args.id,
args.filter_archive,
args.ascending, args.ascending,
args.debug), LOCAL_PAGE_SIZE); args.debug), LOCAL_PAGE_SIZE);
break; break;
@ -319,12 +320,13 @@ public class ViewModelMessages extends ViewModel {
private boolean filter_unflagged; private boolean filter_unflagged;
private boolean filter_unknown; private boolean filter_unknown;
private boolean filter_snoozed; private boolean filter_snoozed;
private boolean filter_archive;
private boolean debug; private boolean debug;
Args(Context context, Args(Context context,
AdapterMessage.ViewType viewType, AdapterMessage.ViewType viewType,
String type, long account, long folder, String type, long account, long folder,
String thread, long id, String thread, long id, boolean filter_archive,
String query, boolean server) { String query, boolean server) {
this.type = type; this.type = type;
@ -332,6 +334,7 @@ public class ViewModelMessages extends ViewModel {
this.folder = folder; this.folder = folder;
this.thread = thread; this.thread = thread;
this.id = id; this.id = id;
this.filter_archive = filter_archive;
this.query = query; this.query = query;
this.server = server; this.server = server;
@ -366,6 +369,7 @@ public class ViewModelMessages extends ViewModel {
this.filter_unflagged == other.filter_unflagged && this.filter_unflagged == other.filter_unflagged &&
this.filter_unknown == other.filter_unknown && this.filter_unknown == other.filter_unknown &&
this.filter_snoozed == other.filter_snoozed && this.filter_snoozed == other.filter_snoozed &&
this.filter_archive == other.filter_archive &&
this.debug == other.debug); this.debug == other.debug);
} else } else
return false; return false;
@ -383,6 +387,7 @@ public class ViewModelMessages extends ViewModel {
" unflagged=" + filter_unflagged + " unflagged=" + filter_unflagged +
" unknown=" + filter_unknown + " unknown=" + filter_unknown +
" snoozed=" + filter_snoozed + " snoozed=" + filter_snoozed +
" archive=" + filter_archive +
" debug=" + debug; " debug=" + debug;
} }
} }

Loading…
Cancel
Save