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.putString("thread", intent.getStringExtra("thread"));
args.putLong("id", intent.getLongExtra("id", -1));
args.putBoolean("filter_archive", intent.getBooleanExtra("filter_archive", true));
args.putBoolean("found", found);
FragmentMessages fragment = new FragmentMessages();

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

@ -179,6 +179,7 @@ public interface DaoMessage {
" WHERE message.account = :account" +
" AND message.thread = :thread" +
" AND (:id IS NULL OR message.id = :id)" +
" AND (NOT :filter_archive OR folder.type <> '" + EntityFolder.ARCHIVE + "')" +
" AND (NOT message.ui_hide OR :debug)" +
" ORDER BY CASE WHEN :ascending THEN message.received ELSE -message.received END" +
", CASE" +
@ -193,7 +194,10 @@ public interface DaoMessage {
" WHEN folder.type = '" + EntityFolder.ARCHIVE + "' THEN 9" +
" ELSE 999 END")
// 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" +
", COUNT(message.id) AS count" +

@ -246,6 +246,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
private boolean server;
private String thread;
private long id;
private boolean filter_archive;
private boolean found;
private String query;
private boolean pane;
@ -349,6 +350,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
server = args.getBoolean("server", false);
thread = args.getString("thread");
id = args.getLong("id", -1);
filter_archive = args.getBoolean("filter_archive", true);
found = args.getBoolean("found", false);
query = args.getString("query");
pane = args.getBoolean("pane", false);
@ -3711,7 +3713,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
ViewModelMessages.Model vmodel = model.getModel(
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.setObserver(getViewLifecycleOwner(), observer);

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

Loading…
Cancel
Save