Refactoring

pull/153/head
M66B 7 years ago
parent 6d1438f31f
commit 98b84f8927

@ -1259,7 +1259,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
if (encrypted == null) {
EntityMessage message = db.message().getMessage(id);
String body = Helper.readText(EntityMessage.getFile(context, message.id));
String body = Helper.readText(message.getFile(context));
// https://tools.ietf.org/html/rfc4880#section-6.2
int begin = body.indexOf(PGP_BEGIN_MESSAGE);
@ -1296,7 +1296,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
// Write decrypted body
EntityMessage m = db.message().getMessage(id);
Helper.writeText(EntityMessage.getFile(context, m.id), decrypted.toString());
Helper.writeText(m.getFile(context), decrypted.toString());
db.message().setMessageStored(id, new Date().getTime());
@ -1319,7 +1319,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
// Write decrypted body
EntityMessage m = db.message().getMessage(id);
Helper.writeText(EntityMessage.getFile(context, m.id), parts.getHtml(context));
Helper.writeText(m.getFile(context), parts.getHtml(context));
// Remove previously decrypted attachments
for (EntityAttachment a : attachments)
@ -1421,7 +1421,11 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
throw new IllegalArgumentException(context.getString(R.string.title_no_stream));
}
File file = EntityMessage.getRawFile(context, id);
DB db = DB.getInstance(context);
EntityMessage message = db.message().getMessage(id);
if (message == null)
return null;
File file = message.getRawFile(context);
Log.i("Raw file=" + file);
ParcelFileDescriptor pfd = null;

@ -92,6 +92,7 @@ import org.jsoup.nodes.Element;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
@ -1600,7 +1601,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
String body;
try {
body = Helper.readText(EntityMessage.getFile(context, message.id));
body = Helper.readText(message.getFile(context));
} catch (IOException ex) {
Log.e(ex);
db.message().setMessageContent(message.id, false, null, null);
@ -2290,7 +2291,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
return new String[]{
from,
message.subject,
HtmlHelper.getText(Helper.readText(EntityMessage.getFile(context, message.id)))
HtmlHelper.getText(Helper.readText(message.getFile(context)))
};
}
@ -2645,6 +2646,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
if (EntityFolder.OUTBOX.equals(folder.type)) {
long id = message.id;
File source = message.getFile(context);
// Insert into drafts
EntityFolder drafts = db.folder().getFolderByType(message.account, EntityFolder.DRAFTS);
message.id = null;
@ -2652,8 +2655,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
message.ui_snoozed = null;
message.id = db.message().insertMessage(message);
File source = EntityMessage.getFile(context, id);
File target = EntityMessage.getFile(context, message.id);
File target = message.getFile(context);
source.renameTo(target);
List<EntityAttachment> attachments = db.attachment().getAttachments(id);
@ -2880,10 +2882,13 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
}
private String getHtmlEmbedded(long id) throws IOException {
String html = Helper.readText(EntityMessage.getFile(context, id));
DB db = DB.getInstance(context);
EntityMessage message = db.message().getMessage(id);
if (message == null)
throw new FileNotFoundException();
String html = Helper.readText(message.getFile(context));
Document doc = Jsoup.parse(html);
for (Element img : doc.select("img")) {
String src = img.attr("src");

@ -395,7 +395,7 @@ class Core {
identity == null ? false : identity.plain_only);
} else {
// Cross account move
File file = EntityMessage.getRawFile(context, message.id);
File file = message.getRawFile(context);
if (!file.exists())
throw new IllegalArgumentException("raw message file not found");
@ -605,8 +605,7 @@ class Core {
if (imessage == null)
throw new MessageRemovedException();
File file = EntityMessage.getRawFile(context, message.id);
File file = message.getRawFile(context);
try (OutputStream os = new BufferedOutputStream(new FileOutputStream(file))) {
imessage.writeTo(os);
db.message().setMessageRaw(message.id, true);
@ -643,7 +642,7 @@ class Core {
MessageHelper helper = new MessageHelper((MimeMessage) imessage);
MessageHelper.MessageParts parts = helper.getMessageParts();
String body = parts.getHtml(context);
Helper.writeText(EntityMessage.getFile(context, message.id), body);
Helper.writeText(message.getFile(context), body);
db.message().setMessageContent(message.id, true,
HtmlHelper.getPreview(body), parts.getWarnings(message.warning));
}
@ -1393,7 +1392,7 @@ class Core {
if (!message.content) {
if (!metered || (message.size != null && message.size < maxSize)) {
String body = parts.getHtml(context);
Helper.writeText(EntityMessage.getFile(context, message.id), body);
Helper.writeText(message.getFile(context), body);
db.message().setMessageContent(message.id, true,
HtmlHelper.getPreview(body), parts.getWarnings(message.warning));
Log.i(folder.name + " downloaded message id=" + message.id + " size=" + message.size);
@ -1678,7 +1677,7 @@ class Core {
if (message.content && preview)
try {
String body = Helper.readText(EntityMessage.getFile(context, message.id));
String body = Helper.readText(message.getFile(context));
StringBuilder sb = new StringBuilder();
if (!TextUtils.isEmpty(message.subject))
sb.append(message.subject).append("<br>");

@ -150,21 +150,21 @@ public class EntityMessage implements Serializable {
return sb.toString();
}
static File getFile(Context context, Long id) {
File getFile(Context context) {
File dir = new File(context.getFilesDir(), "messages");
if (!dir.exists())
dir.mkdir();
return new File(dir, id.toString());
}
static File getRefFile(Context context, Long id) {
File getRefFile(Context context) {
File dir = new File(context.getFilesDir(), "references");
if (!dir.exists())
dir.mkdir();
return new File(dir, id.toString());
}
static File getRawFile(Context context, Long id) {
File getRawFile(Context context) {
File dir = new File(context.getFilesDir(), "raw");
if (!dir.exists())
dir.mkdir();

@ -26,6 +26,7 @@ import android.preference.PreferenceManager;
import org.json.JSONArray;
import org.json.JSONException;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
@ -140,6 +141,8 @@ public class EntityOperation {
target.synchronize &&
message.received > cal_keep.getTimeInMillis() &&
db.message().countMessageByMsgId(target.id, message.msgid) == 0) {
File msource = message.getFile(context);
// Copy message to target folder
long id = message.id;
long uid = message.uid;
@ -153,7 +156,9 @@ public class EntityOperation {
message.seen = true;
message.ui_seen = true;
}
tmpid = db.message().insertMessage(message);
message.id = db.message().insertMessage(message);
File mtarget = message.getFile(context);
tmpid = message.id;
message.id = id;
message.account = source.account;
@ -164,9 +169,7 @@ public class EntityOperation {
if (message.content)
try {
Helper.copy(
EntityMessage.getFile(context, id),
EntityMessage.getFile(context, tmpid));
Helper.copy(msource, mtarget);
} catch (IOException ex) {
Log.e(ex);
db.message().setMessageContent(tmpid, false, null, null);

@ -220,7 +220,7 @@ public class EntityRule {
reply.sender = MessageHelper.getSortKey(reply.from);
reply.received = new Date().getTime();
reply.id = db.message().insertMessage(reply);
Helper.writeText(EntityMessage.getFile(context, reply.id), body);
Helper.writeText(reply.getFile(context), body);
db.message().setMessageContent(reply.id, true, HtmlHelper.getPreview(body), null);
EntityOperation.queue(context, db, reply, EntityOperation.SEND);

@ -97,6 +97,7 @@ import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
@ -557,8 +558,13 @@ public class FragmentCompose extends FragmentBase {
long id = args.getLong("id");
String body = args.getString("body");
File file = EntityMessage.getFile(context, id);
File refFile = EntityMessage.getRefFile(context, id);
DB db = DB.getInstance(context);
EntityMessage draft = db.message().getMessage(id);
if (draft == null)
return null;
File file = draft.getFile(context);
File refFile = draft.getRefFile(context);
String ref = Helper.readText(refFile);
String plain = HtmlHelper.getText(ref);
@ -1745,7 +1751,7 @@ public class FragmentCompose extends FragmentBase {
draft.received = new Date().getTime();
draft.id = db.message().insertMessage(draft);
Helper.writeText(EntityMessage.getFile(context, draft.id), body);
Helper.writeText(draft.getFile(context), body);
db.message().setMessageContent(draft.id, true, HtmlHelper.getPreview(body), null);
@ -1754,8 +1760,8 @@ public class FragmentCompose extends FragmentBase {
String refBody = String.format("<p>%s %s:</p>\n<blockquote>%s</blockquote>",
Html.escapeHtml(new Date(ref.received).toString()),
Html.escapeHtml(MessageHelper.formatAddresses(ref.from)),
Helper.readText(EntityMessage.getFile(context, ref.id)));
Helper.writeText(EntityMessage.getRefFile(context, draft.id), refBody);
Helper.readText(ref.getFile(context)));
Helper.writeText(draft.getRefFile(context), refBody);
}
if ("new".equals(action)) {
@ -2079,7 +2085,7 @@ public class FragmentCompose extends FragmentBase {
!MessageHelper.equal(draft.bcc, abcc) ||
!Objects.equals(draft.subject, subject) ||
last_available != available ||
!body.equals(Helper.readText(EntityMessage.getFile(context, draft.id))));
!body.equals(Helper.readText(draft.getFile(context))));
last_available = available;
@ -2095,14 +2101,14 @@ public class FragmentCompose extends FragmentBase {
draft.subject = subject;
draft.received = new Date().getTime();
db.message().updateMessage(draft);
Helper.writeText(EntityMessage.getFile(context, draft.id), body);
Helper.writeText(draft.getFile(context), body);
db.message().setMessageContent(draft.id, true, HtmlHelper.getPreview(body), null);
}
// Remove unused inline images
StringBuilder sb = new StringBuilder();
sb.append(body);
File rfile = EntityMessage.getRefFile(context, draft.id);
File rfile = draft.getRefFile(context);
if (rfile.exists())
sb.append(Helper.readText(rfile));
List<String> cids = new ArrayList<>();
@ -2165,7 +2171,7 @@ public class FragmentCompose extends FragmentBase {
// Delete draft (cannot move to outbox)
EntityOperation.queue(context, db, draft, EntityOperation.DELETE);
File refDraftFile = EntityMessage.getRefFile(context, draft.id);
File refDraftFile = draft.getRefFile(context);
// Copy message to outbox
draft.id = null;
@ -2173,9 +2179,9 @@ public class FragmentCompose extends FragmentBase {
draft.uid = null;
draft.ui_hide = false;
draft.id = db.message().insertMessage(draft);
Helper.writeText(EntityMessage.getFile(context, draft.id), body);
Helper.writeText(draft.getFile(context), body);
if (refDraftFile.exists()) {
File refFile = EntityMessage.getRefFile(context, draft.id);
File refFile = draft.getRefFile(context);
refDraftFile.renameTo(refFile);
}
@ -2328,11 +2334,17 @@ public class FragmentCompose extends FragmentBase {
final long id = args.getLong("id");
final boolean show_images = args.getBoolean("show_images", false);
String body = Helper.readText(EntityMessage.getFile(context, id));
DB db = DB.getInstance(context);
EntityMessage draft = db.message().getMessage(id);
if (draft == null)
throw new FileNotFoundException();
String body = Helper.readText(draft.getFile(context));
Spanned spannedBody = HtmlHelper.fromHtml(body, cidGetter, null);
Spanned spannedReference = null;
File refFile = EntityMessage.getRefFile(context, id);
File refFile = draft.getRefFile(context);
if (refFile.exists()) {
String quote = HtmlHelper.sanitize(context, Helper.readText(refFile), true);
Spanned spannedQuote = HtmlHelper.fromHtml(quote,

@ -415,7 +415,7 @@ public class Helper {
draft.subject = context.getString(R.string.app_name) + " " + BuildConfig.VERSION_NAME + " debug info";
draft.received = new Date().getTime();
draft.id = db.message().insertMessage(draft);
writeText(EntityMessage.getFile(context, draft.id), body);
writeText(draft.getFile(context), body);
db.message().setMessageContent(draft.id, true, HtmlHelper.getPreview(body), null);
attachSettings(context, draft.id, 1);

@ -289,7 +289,7 @@ public class MessageHelper {
DB db = DB.getInstance(context);
StringBuilder body = new StringBuilder();
body.append(Helper.readText(EntityMessage.getFile(context, message.id)));
body.append(Helper.readText(message.getFile(context)));
if (message.identity != null) {
EntityIdentity identity = db.identity().getIdentity(message.identity);
@ -297,7 +297,7 @@ public class MessageHelper {
body.append(identity.signature);
}
File refFile = EntityMessage.getRefFile(context, message.id);
File refFile = message.getRefFile(context);
if (refFile.exists())
body.append(Helper.readText(refFile));

@ -319,11 +319,11 @@ public class ServiceSend extends LifecycleService {
// Append replied/forwarded text
StringBuilder sb = new StringBuilder();
sb.append(Helper.readText(EntityMessage.getFile(this, message.id)));
File refFile = EntityMessage.getRefFile(this, message.id);
sb.append(Helper.readText(message.getFile(this)));
File refFile = message.getRefFile(this);
if (refFile.exists())
sb.append(Helper.readText(refFile));
Helper.writeText(EntityMessage.getFile(this, message.id), sb.toString());
Helper.writeText(message.getFile(this), sb.toString());
try {
db.beginTransaction();

@ -112,7 +112,7 @@ public class ViewModelBrowse extends ViewModel {
String body = null;
if (message.content)
try {
body = Helper.readText(EntityMessage.getFile(state.context, message.id));
body = Helper.readText(message.getFile(state.context));
} catch (IOException ex) {
Log.e(ex);
}

Loading…
Cancel
Save