Fixed threaded messages actions

pull/145/head
M66B 6 years ago
parent 757154ffff
commit 2b807d5253

@ -263,7 +263,7 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
final TupleMessageEx message = getItem(pos);
PopupMenu popupMenu = new PopupMenu(context, itemView);
if (!EntityFolder.OUTBOX.equals(message.folderType)) {
if (!message.threaded && !EntityFolder.OUTBOX.equals(message.folderType)) {
popupMenu.getMenu().add(Menu.NONE, action_flag, 1, message.ui_flagged ? R.string.title_unflag : R.string.title_flag);
popupMenu.getMenu().add(Menu.NONE, action_seen, 2, message.ui_seen ? R.string.title_unseen : R.string.title_seen);
}

@ -42,6 +42,7 @@ import android.widget.TextView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutorService;
@ -241,12 +242,14 @@ public class FragmentMessages extends FragmentEx {
Bundle args = new Bundle();
args.putLong("id", message.id);
args.putInt("direction", direction);
args.putBoolean("single", !message.threaded);
new SimpleTask<String[]>() {
@Override
protected String[] onLoad(Context context, Bundle args) {
long id = args.getLong("id");
int direction = args.getInt("direction");
boolean single = args.getBoolean("single");
EntityFolder target = null;
// Get target folder and hide message
@ -266,7 +269,14 @@ public class FragmentMessages extends FragmentEx {
target = db.folder().getFolderByType(message.account, EntityFolder.TRASH);
}
db.message().setMessageUiHide(message.id, true);
List<EntityMessage> messages = new ArrayList<>();
if (single)
messages.add(message);
else
messages.addAll(db.message().getMessageByThread(message.account, message.thread));
for (EntityMessage m : messages)
db.message().setMessageUiHide(m.id, true);
db.setTransactionSuccessful();
} finally {
@ -295,8 +305,30 @@ public class FragmentMessages extends FragmentEx {
@Override
protected Void onLoad(Context context, Bundle args) {
long id = args.getLong("id");
Log.i(Helper.TAG, "Undo move id=" + id);
DB.getInstance(context).message().setMessageUiHide(id, false);
boolean single = args.getBoolean("single");
DB db = DB.getInstance(context);
try {
db.beginTransaction();
EntityMessage message = db.message().getMessage(id);
List<EntityMessage> messages = new ArrayList<>();
if (single)
messages.add(message);
else
messages.addAll(db.message().getMessageByThread(message.account, message.thread));
for (EntityMessage m : messages) {
Log.i(Helper.TAG, "Undo move id=" + m.id);
DB.getInstance(context).message().setMessageUiHide(m.id, false);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
return null;
}

Loading…
Cancel
Save