Browse Source

Load body once

main
M66B 6 years ago
parent
commit
416cbf24b9
1 changed files with 17 additions and 24 deletions
  1. +17
    -24
      app/src/main/java/eu/faircode/email/FragmentMessage.java

+ 17
- 24
app/src/main/java/eu/faircode/email/FragmentMessage.java View File

@ -273,6 +273,19 @@ public class FragmentMessage extends FragmentEx {
} }
}); });
btnImages.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btnImages.setEnabled(false);
show_images = true;
Bundle args = new Bundle();
args.putLong("id", message.id);
args.putBoolean("show_images", show_images);
bodyTask.load(FragmentMessage.this, args);
}
});
tvBody.setMovementMethod(new LinkMovementMethod() { tvBody.setMovementMethod(new LinkMovementMethod() {
public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) { public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) {
if (event.getAction() != MotionEvent.ACTION_UP) if (event.getAction() != MotionEvent.ACTION_UP)
@ -480,28 +493,6 @@ public class FragmentMessage extends FragmentEx {
show_images = savedInstanceState.getBoolean("show_images"); show_images = savedInstanceState.getBoolean("show_images");
} }
if (tvBody.getTag() == null) {
// Spanned text needs to be loaded after recreation too
final Bundle args = new Bundle();
args.putLong("id", message.id);
args.putBoolean("show_images", show_images);
pbBody.setVisibility(View.VISIBLE);
if (message.content)
bodyTask.load(FragmentMessage.this, args);
btnImages.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setEnabled(false);
show_images = true;
args.putBoolean("show_images", show_images);
bodyTask.load(FragmentMessage.this, args);
}
});
}
setSeen(); setSeen();
if (message.avatar == null || if (message.avatar == null ||
@ -541,6 +532,7 @@ public class FragmentMessage extends FragmentEx {
// Observe message // Observe message
db.message().liveMessage(message.id).observe(getViewLifecycleOwner(), new Observer<TupleMessageEx>() { db.message().liveMessage(message.id).observe(getViewLifecycleOwner(), new Observer<TupleMessageEx>() {
private boolean loaded = false;
private boolean observing = false; private boolean observing = false;
@Override @Override
@ -561,7 +553,9 @@ public class FragmentMessage extends FragmentEx {
pbRawHeaders.setVisibility(!free && headers && message.headers == null ? View.VISIBLE : View.GONE); pbRawHeaders.setVisibility(!free && headers && message.headers == null ? View.VISIBLE : View.GONE);
// Body can be downloaded // Body can be downloaded
if (message.content) {
if (!loaded && message.content) {
loaded = true;
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putLong("id", message.id); args.putLong("id", message.id);
args.putBoolean("show_images", show_images); args.putBoolean("show_images", show_images);
@ -1172,7 +1166,6 @@ public class FragmentMessage extends FragmentEx {
boolean has_images = (ss.getSpans(0, ss.length(), ImageSpan.class).length > 0); boolean has_images = (ss.getSpans(0, ss.length(), ImageSpan.class).length > 0);
tvBody.setText(body); tvBody.setText(body);
tvBody.setTag(true);
btnImages.setVisibility(has_images && !show_images ? View.VISIBLE : View.GONE); btnImages.setVisibility(has_images && !show_images ? View.VISIBLE : View.GONE);
grpMessage.setVisibility(View.VISIBLE); grpMessage.setVisibility(View.VISIBLE);
fab.setVisibility(free ? View.GONE : View.VISIBLE); fab.setVisibility(free ? View.GONE : View.VISIBLE);


Loading…
Cancel
Save