Debug: added thread info

pull/194/merge
M66B 4 years ago
parent 9acec93317
commit 87e4e526bc

@ -150,6 +150,7 @@ import com.google.android.material.snackbar.Snackbar;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.w3c.dom.Entity;
import org.w3c.dom.css.CSSStyleSheet;
import java.io.BufferedOutputStream;
@ -5361,6 +5362,9 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
popupMenu.getMenu().findItem(R.id.menu_raw_send_message).setEnabled(canRaw);
popupMenu.getMenu().findItem(R.id.menu_raw_send_thread).setEnabled(canRaw);
popupMenu.getMenu().findItem(R.id.menu_thread_info)
.setVisible(BuildConfig.TEST_RELEASE || BuildConfig.DEBUG || debug);
popupMenu.getMenu().findItem(R.id.menu_resync)
.setEnabled(message.uid != null ||
message.accountProtocol == EntityAccount.TYPE_POP)
@ -5464,6 +5468,9 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
} else if (itemId == R.id.menu_raw_send_thread) {
onMenuRawSend(message, true);
return true;
} else if (itemId == R.id.menu_thread_info) {
onMenuThreadInfo(message);
return true;
} else if (itemId == R.id.menu_resync) {
onMenuResync(message);
return true;
@ -5799,6 +5806,72 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
}.execute(context, owner, args, "importance:set");
}
private void onMenuThreadInfo(TupleMessageEx message) {
Bundle args = new Bundle();
args.putLong("id", message.id);
new SimpleTask<List<EntityMessage>>() {
@Override
protected List<EntityMessage> onExecute(Context context, Bundle args) {
long id = args.getLong("id");
Map<String, EntityMessage> map = new HashMap<>();
DB db = DB.getInstance(context);
EntityMessage message = db.message().getMessage(id);
if (message == null)
return null;
if (!TextUtils.isEmpty(message.inreplyto))
for (EntityMessage m : db.message().getMessagesByMsgId(message.account, message.inreplyto))
map.put(m.msgid, m);
if (!TextUtils.isEmpty(message.references))
for (String ref : message.references.split(" "))
for (EntityMessage m : db.message().getMessagesByMsgId(message.account, ref))
map.put(m.msgid, m);
return new ArrayList(map.values());
}
@Override
protected void onExecuted(Bundle args, List<EntityMessage> referenced) {
DateFormat DTF = Helper.getDateTimeInstance(context);
SpannableStringBuilder ssb = new SpannableStringBuilderEx();
ssb.append("Message-ID: ").append(message.msgid).append("\n");
if (!TextUtils.isEmpty(message.inreplyto))
ssb.append("In-reply-to: ").append(message.inreplyto).append("\n");
if (!TextUtils.isEmpty(message.references))
ssb.append("References: ").append(message.references).append("\n");
ssb.append("Thread: ").append(message.thread).append("\n");
ssb.append("\n");
if (referenced != null)
for (EntityMessage ref : referenced)
ssb.append(ref.msgid).append(": ")
.append(DTF.format(ref.received)).append(' ')
.append(ref.subject == null ? "" : ref.subject)
.append("\n\n");
ssb.setSpan(new RelativeSizeSpan(HtmlHelper.FONT_SMALL), 0, ssb.length(), 0);
new AlertDialog.Builder(context)
.setTitle(context.getString(R.string.title_thread_info))
.setMessage(ssb)
.setNegativeButton(android.R.string.cancel, null)
.show();
}
@Override
protected void onException(Bundle args, Throwable ex) {
Log.unexpectedError(parentFragment.getParentFragmentManager(), ex);
}
}.execute(context, owner, args, "message:resync");
}
private void onMenuResync(TupleMessageEx message) {
Bundle args = new Bundle();
args.putLong("id", message.id);

@ -150,6 +150,11 @@
</menu>
</item>
<item
android:id="@+id/menu_thread_info"
android:icon="@drawable/baseline_mail_more_24"
android:title="@string/title_thread_info" />
<item
android:id="@+id/menu_resync"
android:icon="@drawable/twotone_sync_24"

@ -1378,6 +1378,7 @@
<string name="title_verify">Verify</string>
<string name="title_encrypt">Encrypt</string>
<string name="title_decrypt">Decrypt</string>
<string name="title_thread_info" translatable="false">Thread info</string>
<string name="title_resync">Resync</string>
<string name="title_alternative_text">Show plain text</string>
<string name="title_alternative_html">Show HTML</string>

Loading…
Cancel
Save