MCPcopy Create free account
hub / github.com/M66B/FairEmail / onReplyDirect

Method onReplyDirect

app/src/main/java/eu/faircode/email/ServiceUI.java:313–384  ·  view source on GitHub ↗
(long id, Intent intent)

Source from the content-addressed store, hash-verified

311 }
312
313 private void onReplyDirect(long id, Intent intent) throws IOException {
314 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
315 boolean plain_only = prefs.getBoolean("plain_only", false);
316
317 DB db = DB.getInstance(this);
318
319 EntityMessage ref = db.message().getMessage(id);
320 if (ref == null)
321 throw new IllegalArgumentException("message not found");
322
323 EntityIdentity identity = db.identity().getIdentity(ref.identity);
324 if (identity == null)
325 throw new IllegalArgumentException("identity not found");
326
327 EntityFolder outbox = db.folder().getOutbox();
328 if (outbox == null)
329 throw new IllegalArgumentException("outbox not found");
330
331
332 ClipData clip = intent.getClipData();
333 Intent inner = (clip != null && clip.getItemCount() > 0 ? clip.getItemAt(0).getIntent() : null);
334
335 Bundle results = RemoteInput.getResultsFromIntent(intent);
336 EntityLog.log(this, "Reply direct intent=" + intent +
337 " extras: " + TextUtils.join(" ", Log.getExtras(intent.getExtras())) +
338 " inner=" + inner + (inner == null ? "" : " extras: " + TextUtils.join(" ", Log.getExtras(inner.getExtras()))) +
339 " results: " + Log.getExtras(results));
340
341 Object obj = results.get("text");
342 String body = (obj == null ? null : "<p>" + obj.toString().replaceAll("\\r?\\n", "<br>") + "</p>");
343
344 String text = HtmlHelper.getFullText(this, body);
345 String language = HtmlHelper.getLanguage(this, ref.subject, text);
346 String preview = HtmlHelper.getPreview(text);
347
348 try {
349 db.beginTransaction();
350
351 EntityMessage reply = new EntityMessage();
352 reply.account = identity.account;
353 reply.folder = outbox.id;
354 reply.identity = identity.id;
355 reply.msgid = EntityMessage.generateMessageId();
356 reply.inreplyto = ref.msgid;
357 reply.thread = ref.thread;
358 reply.to = ref.from;
359 reply.from = new Address[]{new InternetAddress(identity.email, identity.name, StandardCharsets.UTF_8.name())};
360 reply.subject = EntityMessage.getSubject(this, ref.language, ref.subject, false);
361 reply.received = new Date().getTime();
362 reply.seen = true;
363 reply.ui_seen = true;
364 reply.id = db.message().insertMessage(reply);
365
366 File file = reply.getFile(this);
367 Helper.writeText(file, body);
368
369 db.message().setMessageContent(reply.id,
370 true,

Callers 1

onHandleIntentMethod · 0.95

Calls 15

getInstanceMethod · 0.95
messageMethod · 0.95
identityMethod · 0.95
folderMethod · 0.95
logMethod · 0.95
getExtrasMethod · 0.95
getFullTextMethod · 0.95
getLanguageMethod · 0.95
getPreviewMethod · 0.95
beginTransactionMethod · 0.95
generateMessageIdMethod · 0.95
getSubjectMethod · 0.95

Tested by

no test coverage detected