Refactoring

pull/146/head
M66B 7 years ago
parent 60a76298fb
commit 166bc88fc6

@ -1164,14 +1164,10 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
EntityMessage message = db.message().getMessage(id); EntityMessage message = db.message().getMessage(id);
if (thread) {
List<EntityMessage> messages = db.message().getMessageByThread( List<EntityMessage> messages = db.message().getMessageByThread(
message.account, message.thread, threading ? null : id, message.ui_found); message.account, message.thread, threading && thread ? null : id, message.folder, message.ui_found);
for (EntityMessage threaded : messages) for (EntityMessage threaded : messages)
if (threaded.folder.equals(message.folder))
EntityOperation.queue(db, threaded, EntityOperation.FLAG, flagged); EntityOperation.queue(db, threaded, EntityOperation.FLAG, flagged);
} else
EntityOperation.queue(db, message, EntityOperation.FLAG, flagged);
return null; return null;
} }

@ -164,8 +164,9 @@ public interface DaoMessage {
" WHERE account = :account" + " WHERE account = :account" +
" AND thread = :thread" + " AND thread = :thread" +
" AND (:id IS NULL OR message.id = :id)" + " AND (:id IS NULL OR message.id = :id)" +
" AND (:folder IS NULL OR message.folder = :folder)" +
" AND ui_found = :found") " AND ui_found = :found")
List<EntityMessage> getMessageByThread(long account, String thread, Long id, boolean found); List<EntityMessage> getMessageByThread(long account, String thread, Long id, Long folder, boolean found);
@Query("SELECT message.* FROM message" + @Query("SELECT message.* FROM message" +
" JOIN folder ON folder.id = message.folder" + " JOIN folder ON folder.id = message.folder" +

@ -527,11 +527,9 @@ public class FragmentMessages extends FragmentEx {
if (thread) { if (thread) {
List<EntityMessage> messages = db.message().getMessageByThread( List<EntityMessage> messages = db.message().getMessageByThread(
message.account, message.thread, threading ? null : id, message.ui_found); message.account, message.thread, threading ? null : id, message.folder, message.ui_found);
for (EntityMessage threaded : messages) { for (EntityMessage threaded : messages)
if (!threaded.ui_hide && threaded.folder.equals(message.folder))
result.ids.add(threaded.id); result.ids.add(threaded.id);
}
} else } else
result.ids.add(message.id); result.ids.add(message.id);
@ -587,6 +585,66 @@ public class FragmentMessages extends FragmentEx {
return false; return false;
} }
} }
private void onActionMove(String folderType) {
Bundle args = new Bundle();
args.putLong("account", account);
args.putBoolean("found", found);
args.putString("folderType", folderType);
new SimpleTask<MessageTarget>() {
@Override
protected MessageTarget onLoad(Context context, Bundle args) {
long account = args.getLong("account");
String thread = args.getString("thread");
boolean found = args.getBoolean("found");
String folderType = args.getString("folderType");
MessageTarget result = new MessageTarget();
DB db = DB.getInstance(context);
try {
db.beginTransaction();
result.target = db.folder().getFolderByType(account, folderType);
List<EntityMessage> messages = db.message().getMessageByThread(
account, thread, threading ? null : id, null, found);
for (EntityMessage message : messages)
if (!result.target.id.equals(message.folder)) {
result.ids.add(message.id);
db.message().setMessageUiHide(message.id, true);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
return result;
}
@Override
protected void onLoaded(Bundle args, MessageTarget result) {
moveUndo(result);
}
@Override
protected void onException(Bundle args, Throwable ex) {
Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex);
}
}.load(FragmentMessages.this, args);
}
private void onActionNavigate(ViewModelMessages.Target target) {
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext());
lbm.sendBroadcast(
new Intent(ActivityView.ACTION_VIEW_THREAD)
.putExtra("account", target.account)
.putExtra("thread", target.thread)
.putExtra("id", target.id)
.putExtra("found", target.found));
}
}); });
fab.setOnClickListener(new View.OnClickListener() { fab.setOnClickListener(new View.OnClickListener() {
@ -776,9 +834,8 @@ public class FragmentMessages extends FragmentEx {
EntityMessage message = db.message().getMessage(id); EntityMessage message = db.message().getMessage(id);
if (message.ui_seen != seen) { if (message.ui_seen != seen) {
List<EntityMessage> messages = db.message().getMessageByThread( List<EntityMessage> messages = db.message().getMessageByThread(
message.account, message.thread, threading ? null : id, message.ui_found); message.account, message.thread, threading ? null : id, message.folder, message.ui_found);
for (EntityMessage threaded : messages) for (EntityMessage threaded : messages)
if (threaded.folder.equals(message.folder))
EntityOperation.queue(db, threaded, EntityOperation.SEEN, seen); EntityOperation.queue(db, threaded, EntityOperation.SEEN, seen);
} }
} }
@ -819,9 +876,8 @@ public class FragmentMessages extends FragmentEx {
EntityMessage message = db.message().getMessage(id); EntityMessage message = db.message().getMessage(id);
if (message.ui_flagged != flagged) { if (message.ui_flagged != flagged) {
List<EntityMessage> messages = db.message().getMessageByThread( List<EntityMessage> messages = db.message().getMessageByThread(
message.account, message.thread, threading ? null : id, message.ui_found); message.account, message.thread, threading ? null : id, message.folder, message.ui_found);
for (EntityMessage threaded : messages) for (EntityMessage threaded : messages)
if (threaded.folder.equals(message.folder))
EntityOperation.queue(db, threaded, EntityOperation.FLAG, flagged); EntityOperation.queue(db, threaded, EntityOperation.FLAG, flagged);
} }
} }
@ -877,9 +933,8 @@ public class FragmentMessages extends FragmentEx {
for (long id : ids) { for (long id : ids) {
EntityMessage message = db.message().getMessage(id); EntityMessage message = db.message().getMessage(id);
List<EntityMessage> messages = db.message().getMessageByThread( List<EntityMessage> messages = db.message().getMessageByThread(
message.account, message.thread, threading ? null : id, message.ui_found); message.account, message.thread, threading ? null : id, message.folder, message.ui_found);
for (EntityMessage threaded : messages) for (EntityMessage threaded : messages) {
if (threaded.folder.equals(message.folder)) {
if (threaded.uid == null && !TextUtils.isEmpty(threaded.error)) // outbox if (threaded.uid == null && !TextUtils.isEmpty(threaded.error)) // outbox
db.message().deleteMessage(threaded.id); db.message().deleteMessage(threaded.id);
else else
@ -931,9 +986,8 @@ public class FragmentMessages extends FragmentEx {
for (long id : ids) { for (long id : ids) {
EntityMessage message = db.message().getMessage(id); EntityMessage message = db.message().getMessage(id);
List<EntityMessage> messages = db.message().getMessageByThread( List<EntityMessage> messages = db.message().getMessageByThread(
message.account, message.thread, threading ? null : id, message.ui_found); message.account, message.thread, threading ? null : id, message.folder, message.ui_found);
for (EntityMessage threaded : messages) for (EntityMessage threaded : messages) {
if (threaded.folder.equals(message.folder)) {
result.ids.add(threaded.id); result.ids.add(threaded.id);
db.message().setMessageUiHide(threaded.id, true); db.message().setMessageUiHide(threaded.id, true);
} }
@ -1021,9 +1075,8 @@ public class FragmentMessages extends FragmentEx {
for (long id : ids) { for (long id : ids) {
EntityMessage message = db.message().getMessage(id); EntityMessage message = db.message().getMessage(id);
List<EntityMessage> messages = db.message().getMessageByThread( List<EntityMessage> messages = db.message().getMessageByThread(
message.account, message.thread, threading ? null : id, message.ui_found); message.account, message.thread, threading ? null : id, message.folder, message.ui_found);
for (EntityMessage threaded : messages) for (EntityMessage threaded : messages) {
if (threaded.folder.equals(message.folder)) {
result.ids.add(threaded.id); result.ids.add(threaded.id);
db.message().setMessageUiHide(threaded.id, true); db.message().setMessageUiHide(threaded.id, true);
} }
@ -1684,66 +1737,6 @@ public class FragmentMessages extends FragmentEx {
}.load(this, args); }.load(this, args);
} }
private void onActionMove(String folderType) {
Bundle args = new Bundle();
args.putLong("account", account);
args.putString("thread", thread);
args.putBoolean("found", found);
args.putString("folderType", folderType);
new SimpleTask<MessageTarget>() {
@Override
protected MessageTarget onLoad(Context context, Bundle args) {
long account = args.getLong("account");
String thread = args.getString("thread");
boolean found = args.getBoolean("found");
String folderType = args.getString("folderType");
MessageTarget result = new MessageTarget();
DB db = DB.getInstance(context);
try {
db.beginTransaction();
result.target = db.folder().getFolderByType(account, folderType);
List<EntityMessage> messages = db.message().getMessageByThread(account, thread, threading ? null : id, found);
for (EntityMessage message : messages)
if (message.uid != null && !result.target.id.equals(message.folder)) {
result.ids.add(message.id);
db.message().setMessageUiHide(message.id, true);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
return result;
}
@Override
protected void onLoaded(Bundle args, MessageTarget result) {
moveUndo(result);
}
@Override
protected void onException(Bundle args, Throwable ex) {
Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex);
}
}.load(this, args);
}
private void onActionNavigate(ViewModelMessages.Target target) {
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext());
lbm.sendBroadcast(
new Intent(ActivityView.ACTION_VIEW_THREAD)
.putExtra("account", target.account)
.putExtra("thread", target.thread)
.putExtra("id", target.id)
.putExtra("found", target.found));
}
private void moveUndo(MessageTarget target) { private void moveUndo(MessageTarget target) {
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext());
lbm.sendBroadcast( lbm.sendBroadcast(

Loading…
Cancel
Save