Improved sharing

pull/206/head
M66B 4 years ago
parent 600b664388
commit 9c2e8526fd

@ -315,8 +315,6 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
private static final int MAX_RECIPIENTS_COMPACT = 3; private static final int MAX_RECIPIENTS_COMPACT = 3;
private static final int MAX_RECIPIENTS_NORMAL = 7; private static final int MAX_RECIPIENTS_NORMAL = 7;
private static final int MAX_QUOTE_LEVEL = 3;
private static final int MAX_TRANSLATABLE_TEXT_SIZE = 50 * 1024;
public class ViewHolder extends RecyclerView.ViewHolder implements public class ViewHolder extends RecyclerView.ViewHolder implements
View.OnClickListener, View.OnClickListener,
@ -5249,7 +5247,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
String link = "message://email.faircode.eu/link/#" + message.id; String link = "message://email.faircode.eu/link/#" + message.id;
Document document = JsoupEx.parse(file); Document document = JsoupEx.parse(file);
HtmlHelper.truncate(document, HtmlHelper.MAX_FULL_TEXT_SIZE / 2); HtmlHelper.truncate(document, HtmlHelper.MAX_SHARE_TEXT_SIZE);
Element a = document.createElement("a"); Element a = document.createElement("a");
a.text(context.getString(R.string.app_name)); a.text(context.getString(R.string.app_name));
@ -5442,9 +5440,9 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putLong("id", message.id); args.putLong("id", message.id);
new SimpleTask<String>() { new SimpleTask<File>() {
@Override @Override
protected String onExecute(Context context, Bundle args) throws IOException { protected File onExecute(Context context, Bundle args) throws IOException {
Long id = args.getLong("id"); Long id = args.getLong("id");
File file = EntityMessage.getFile(context, id); File file = EntityMessage.getFile(context, id);
@ -5462,15 +5460,19 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
element.attr("computed", computed); element.attr("computed", computed);
} }
return d.html(); File dir = new File(context.getCacheDir(), "shared");
if (!dir.exists())
dir.mkdir();
File share = new File(dir, message.id + ".txt");
Helper.writeText(share, d.html());
return share;
} }
@Override @Override
protected void onExecuted(Bundle args, String html) { protected void onExecuted(Bundle args, File share) {
Intent intent = new Intent(Intent.ACTION_SEND); Helper.share(context, share, "text/plain", share.getName());
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, html);
context.startActivity(intent);
} }
@Override @Override
@ -7017,7 +7019,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
String html = Helper.readText(file); String html = Helper.readText(file);
Document d = HtmlHelper.sanitizeCompose(context, html, false); Document d = HtmlHelper.sanitizeCompose(context, html, false);
d.select("blockquote").remove(); d.select("blockquote").remove();
HtmlHelper.truncate(d, MAX_TRANSLATABLE_TEXT_SIZE); HtmlHelper.truncate(d, HtmlHelper.MAX_TRANSLATABLE_TEXT_SIZE);
SpannableStringBuilder ssb = HtmlHelper.fromDocument(context, d, null, null); SpannableStringBuilder ssb = HtmlHelper.fromDocument(context, d, null, null);
return ssb.toString() return ssb.toString()
.replace("\uFFFC", "") // Object replacement character .replace("\uFFFC", "") // Object replacement character

@ -131,6 +131,10 @@ public class HtmlHelper {
static final float FONT_SMALL = 0.8f; static final float FONT_SMALL = 0.8f;
static final float FONT_LARGE = 1.25f; static final float FONT_LARGE = 1.25f;
static final int MAX_FULL_TEXT_SIZE = 1024 * 1024; // characters
static final int MAX_SHARE_TEXT_SIZE = 50 * 1024; // characters
static final int MAX_TRANSLATABLE_TEXT_SIZE = 50 * 1024; // characters
private static final int DEFAULT_FONT_SIZE = 16; // pixels private static final int DEFAULT_FONT_SIZE = 16; // pixels
private static final int DEFAULT_FONT_SIZE_PT = 12; // points private static final int DEFAULT_FONT_SIZE_PT = 12; // points
private static final int GRAY_THRESHOLD = Math.round(255 * 0.2f); private static final int GRAY_THRESHOLD = Math.round(255 * 0.2f);
@ -140,7 +144,6 @@ public class HtmlHelper {
private static final int MAX_ALT = 250; private static final int MAX_ALT = 250;
private static final int MAX_AUTO_LINK = 250; private static final int MAX_AUTO_LINK = 250;
private static final int MAX_FORMAT_TEXT_SIZE = 200 * 1024; // characters private static final int MAX_FORMAT_TEXT_SIZE = 200 * 1024; // characters
static final int MAX_FULL_TEXT_SIZE = 1024 * 1024; // characters
private static final int SMALL_IMAGE_SIZE = 5; // pixels private static final int SMALL_IMAGE_SIZE = 5; // pixels
private static final int TRACKING_PIXEL_SURFACE = 25; // pixels private static final int TRACKING_PIXEL_SURFACE = 25; // pixels
private static final float[] HEADING_SIZES = {1.5f, 1.4f, 1.3f, 1.2f, 1.1f, 1f}; private static final float[] HEADING_SIZES = {1.5f, 1.4f, 1.3f, 1.2f, 1.1f, 1f};

Loading…
Cancel
Save