mirror of
https://github.com/M66B/FairEmail.git
synced 2025-02-23 06:31:17 +00:00
Fixed seen/flagged/delete thread
This commit is contained in:
parent
2ca2e47dd6
commit
3e290c85a6
3 changed files with 35 additions and 25 deletions
|
@ -1158,14 +1158,11 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
}.load(context, owner, args);
|
||||
}
|
||||
|
||||
private void onToggleFlag(ActionData data) {
|
||||
onToggleFlag(data.message);
|
||||
}
|
||||
|
||||
private void onToggleFlag(TupleMessageEx message) {
|
||||
Bundle args = new Bundle();
|
||||
args.putLong("id", message.id);
|
||||
args.putBoolean("flagged", !message.ui_flagged);
|
||||
args.putBoolean("thread", viewType != ViewType.THREAD);
|
||||
Log.i(Helper.TAG, "Set message id=" + message.id + " flagged=" + !message.ui_flagged);
|
||||
|
||||
new SimpleTask<Void>() {
|
||||
|
@ -1173,9 +1170,19 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
protected Void onLoad(Context context, Bundle args) {
|
||||
long id = args.getLong("id");
|
||||
boolean flagged = args.getBoolean("flagged");
|
||||
boolean thread = args.getBoolean("thread");
|
||||
|
||||
DB db = DB.getInstance(context);
|
||||
EntityMessage message = db.message().getMessage(id);
|
||||
EntityOperation.queue(db, message, EntityOperation.FLAG, flagged);
|
||||
if (thread) {
|
||||
List<EntityMessage> messages = db.message().getMessageByThread(
|
||||
message.account, message.thread, threading ? null : id, message.ui_found);
|
||||
for (EntityMessage threaded : messages)
|
||||
if (threaded.folder.equals(message.folder))
|
||||
EntityOperation.queue(db, threaded, EntityOperation.FLAG, flagged);
|
||||
} else
|
||||
EntityOperation.queue(db, message, EntityOperation.FLAG, flagged);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -1371,9 +1378,6 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
|
||||
popupMenu.getMenu().findItem(R.id.menu_unseen).setVisible(data.message.uid != null);
|
||||
|
||||
popupMenu.getMenu().findItem(R.id.menu_flag).setChecked(data.message.unflagged != 1);
|
||||
popupMenu.getMenu().findItem(R.id.menu_flag).setVisible(data.message.uid != null);
|
||||
|
||||
popupMenu.getMenu().findItem(R.id.menu_show_headers).setChecked(show_headers);
|
||||
popupMenu.getMenu().findItem(R.id.menu_show_headers).setVisible(data.message.uid != null);
|
||||
|
||||
|
@ -1403,9 +1407,6 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
case R.id.menu_unseen:
|
||||
onUnseen(data);
|
||||
return true;
|
||||
case R.id.menu_flag:
|
||||
onToggleFlag(data);
|
||||
return true;
|
||||
case R.id.menu_show_headers:
|
||||
onShowHeaders(data);
|
||||
return true;
|
||||
|
|
|
@ -44,7 +44,6 @@ import android.widget.TextView;
|
|||
import com.google.android.material.bottomnavigation.BottomNavigationView;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -775,8 +774,13 @@ public class FragmentMessages extends FragmentEx {
|
|||
|
||||
for (long id : ids) {
|
||||
EntityMessage message = db.message().getMessage(id);
|
||||
if (message.ui_seen != seen)
|
||||
EntityOperation.queue(db, message, EntityOperation.SEEN, seen);
|
||||
if (message.ui_seen != seen) {
|
||||
List<EntityMessage> messages = db.message().getMessageByThread(
|
||||
message.account, message.thread, threading ? null : id, message.ui_found);
|
||||
for (EntityMessage threaded : messages)
|
||||
if (threaded.folder.equals(message.folder))
|
||||
EntityOperation.queue(db, threaded, EntityOperation.SEEN, seen);
|
||||
}
|
||||
}
|
||||
|
||||
db.setTransactionSuccessful();
|
||||
|
@ -813,8 +817,13 @@ public class FragmentMessages extends FragmentEx {
|
|||
|
||||
for (long id : ids) {
|
||||
EntityMessage message = db.message().getMessage(id);
|
||||
if (message.ui_flagged != flagged)
|
||||
EntityOperation.queue(db, message, EntityOperation.FLAG, flagged);
|
||||
if (message.ui_flagged != flagged) {
|
||||
List<EntityMessage> messages = db.message().getMessageByThread(
|
||||
message.account, message.thread, threading ? null : id, message.ui_found);
|
||||
for (EntityMessage threaded : messages)
|
||||
if (threaded.folder.equals(message.folder))
|
||||
EntityOperation.queue(db, threaded, EntityOperation.FLAG, flagged);
|
||||
}
|
||||
}
|
||||
|
||||
db.setTransactionSuccessful();
|
||||
|
@ -867,10 +876,15 @@ public class FragmentMessages extends FragmentEx {
|
|||
|
||||
for (long id : ids) {
|
||||
EntityMessage message = db.message().getMessage(id);
|
||||
if (message.uid == null && !TextUtils.isEmpty(message.error)) // outbox
|
||||
db.message().deleteMessage(id);
|
||||
else
|
||||
EntityOperation.queue(db, message, EntityOperation.DELETE);
|
||||
List<EntityMessage> messages = db.message().getMessageByThread(
|
||||
message.account, message.thread, threading ? null : id, message.ui_found);
|
||||
for (EntityMessage threaded : messages)
|
||||
if (threaded.folder.equals(message.folder)) {
|
||||
if (threaded.uid == null && !TextUtils.isEmpty(threaded.error)) // outbox
|
||||
db.message().deleteMessage(threaded.id);
|
||||
else
|
||||
EntityOperation.queue(db, threaded, EntityOperation.DELETE);
|
||||
}
|
||||
}
|
||||
|
||||
db.setTransactionSuccessful();
|
||||
|
|
|
@ -24,11 +24,6 @@
|
|||
android:id="@+id/menu_unseen"
|
||||
android:title="@string/title_unseen" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_flag"
|
||||
android:checkable="true"
|
||||
android:title="@string/title_flag" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_show_headers"
|
||||
android:checkable="true"
|
||||
|
|
Loading…
Reference in a new issue