Move discarded drafts to trash

pull/147/head
M66B 6 years ago
parent ec793d30f6
commit 1b295482fe

@ -1260,6 +1260,24 @@ public class FragmentCompose extends FragmentEx {
.show();
}
private boolean isEmpty() {
if (!TextUtils.isEmpty(etExtra.getText().toString().trim()))
return false;
if (!TextUtils.isEmpty(etTo.getText().toString().trim()))
return false;
if (!TextUtils.isEmpty(etCc.getText().toString().trim()))
return false;
if (!TextUtils.isEmpty(etBcc.getText().toString().trim()))
return false;
if (!TextUtils.isEmpty(etSubject.getText().toString().trim()))
return false;
if (!TextUtils.isEmpty(Jsoup.parse(Html.toHtml(etBody.getText())).text().trim()))
return false;
if (rvAttachment.getAdapter().getItemCount() > 0)
return false;
return true;
}
private void onAction(int action) {
EntityIdentity identity = (EntityIdentity) spIdentity.getSelectedItem();
@ -1268,12 +1286,14 @@ public class FragmentCompose extends FragmentEx {
args.putInt("action", action);
args.putLong("account", identity == null ? -1 : identity.account);
args.putLong("identity", identity == null ? -1 : identity.id);
args.putString("extra", etExtra.getText().toString());
args.putString("to", etTo.getText().toString());
args.putString("cc", etCc.getText().toString());
args.putString("bcc", etBcc.getText().toString());
args.putString("subject", etSubject.getText().toString());
args.putString("extra", etExtra.getText().toString().trim());
args.putString("to", etTo.getText().toString().trim());
args.putString("cc", etCc.getText().toString().trim());
args.putString("bcc", etBcc.getText().toString().trim());
args.putString("subject", etSubject.getText().toString().trim());
args.putInt("attachments", rvAttachment.getAdapter().getItemCount());
// Workaround underlines left by Android
Spannable spannable = etBody.getText();
UnderlineSpan[] uspans = spannable.getSpans(0, spannable.length(), UnderlineSpan.class);
for (UnderlineSpan uspan : uspans)
@ -1281,7 +1301,6 @@ public class FragmentCompose extends FragmentEx {
args.putString("body", Html.toHtml(spannable));
args.putBoolean("empty", isEmpty());
args.putBoolean("dirty", dirty);
dirty = false;
@ -1289,24 +1308,6 @@ public class FragmentCompose extends FragmentEx {
actionLoader.execute(this, args, "compose:action:" + action);
}
private boolean isEmpty() {
if (!TextUtils.isEmpty(etExtra.getText().toString().trim()))
return false;
if (!TextUtils.isEmpty(etTo.getText().toString().trim()))
return false;
if (!TextUtils.isEmpty(etCc.getText().toString().trim()))
return false;
if (!TextUtils.isEmpty(etBcc.getText().toString().trim()))
return false;
if (!TextUtils.isEmpty(etSubject.getText().toString().trim()))
return false;
if (!TextUtils.isEmpty(Jsoup.parse(Html.toHtml(etBody.getText())).text().trim()))
return false;
if (rvAttachment.getAdapter().getItemCount() > 0)
return false;
return true;
}
private static EntityAttachment addAttachment(Context context, long id, Uri uri,
boolean image) throws IOException {
if ("file".equals(uri.getScheme())) {
@ -1973,10 +1974,17 @@ public class FragmentCompose extends FragmentEx {
String cc = args.getString("cc");
String bcc = args.getString("bcc");
String subject = args.getString("subject");
int acount = args.getInt("attachments");
String body = args.getString("body");
boolean empty = args.getBoolean("empty");
boolean dirty = args.getBoolean("dirty");
boolean empty = TextUtils.isEmpty(extra) &&
TextUtils.isEmpty(to) &&
TextUtils.isEmpty(cc) &&
TextUtils.isEmpty(bcc) &&
TextUtils.isEmpty(subject) &&
acount == 0 &&
TextUtils.isEmpty(Jsoup.parse(body).text().trim());
EntityMessage draft;
@ -1994,7 +2002,6 @@ public class FragmentCompose extends FragmentEx {
Log.i("Load action id=" + draft.id + " action=" + action);
if (action != R.id.action_delete) {
// Move draft to new account
if (draft.account != aid && aid >= 0) {
Long uid = draft.uid;
@ -2082,11 +2089,16 @@ public class FragmentCompose extends FragmentEx {
db.message().setMessageContent(
draft.id, true, HtmlHelper.getPreview(body));
}
}
// Execute action
if (action == R.id.action_delete) {
EntityFolder trash = db.folder().getFolderByType(draft.account, EntityFolder.TRASH);
if (empty || trash == null)
EntityOperation.queue(context, db, draft, EntityOperation.DELETE);
else {
EntityOperation.queue(context, db, draft, EntityOperation.SEEN, true);
EntityOperation.queue(context, db, draft, EntityOperation.MOVE, trash.id);
}
if (!empty) {
Handler handler = new Handler(context.getMainLooper());

Loading…
Cancel
Save