mirror of https://github.com/M66B/FairEmail.git
Cache formatted bodies
This commit is contained in:
parent
90f52c6696
commit
852c489ad7
|
@ -490,11 +490,12 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||||
tvBody.setTextSize(textSize / context.getResources().getDisplayMetrics().density);
|
tvBody.setTextSize(textSize / context.getResources().getDisplayMetrics().density);
|
||||||
ta.recycle();
|
ta.recycle();
|
||||||
|
|
||||||
tvBody.setText(null);
|
Spanned body = properties.getBody(message.id);
|
||||||
tvBody.setMovementMethod(null);
|
tvBody.setText(body);
|
||||||
|
tvBody.setMovementMethod(new UrlHandler());
|
||||||
pbBody.setVisibility(View.VISIBLE);
|
pbBody.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
if (message.content) {
|
if (body == null && message.content) {
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
args.putSerializable("message", message);
|
args.putSerializable("message", message);
|
||||||
bodyTask.load(context, owner, args);
|
bodyTask.load(context, owner, args);
|
||||||
|
@ -580,7 +581,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||||
Helper.unexpectedError(context, owner, ex);
|
Helper.unexpectedError(context, owner, ex);
|
||||||
}
|
}
|
||||||
}.load(context, owner, sargs);
|
}.load(context, owner, sargs);
|
||||||
}
|
} else
|
||||||
|
properties.setBody(message.id, null);
|
||||||
|
|
||||||
itemView.setActivated(selectionTracker != null && selectionTracker.isSelected(message.id));
|
itemView.setActivated(selectionTracker != null && selectionTracker.isSelected(message.id));
|
||||||
}
|
}
|
||||||
|
@ -850,6 +852,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||||
tvBody.setText(body);
|
tvBody.setText(body);
|
||||||
tvBody.setMovementMethod(new UrlHandler());
|
tvBody.setMovementMethod(new UrlHandler());
|
||||||
pbBody.setVisibility(View.GONE);
|
pbBody.setVisibility(View.GONE);
|
||||||
|
properties.setBody(message.id, body);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1755,6 +1758,10 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||||
|
|
||||||
boolean getValue(String name, long id);
|
boolean getValue(String name, long id);
|
||||||
|
|
||||||
|
void setBody(long id, Spanned body);
|
||||||
|
|
||||||
|
Spanned getBody(long id);
|
||||||
|
|
||||||
void move(long id, String target, boolean type);
|
void move(long id, String target, boolean type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ import android.graphics.drawable.Drawable;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
import android.text.Spanned;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
@ -119,6 +120,7 @@ public class FragmentMessages extends FragmentEx {
|
||||||
private int autoCloseCount = 0;
|
private int autoCloseCount = 0;
|
||||||
private boolean autoExpand = true;
|
private boolean autoExpand = true;
|
||||||
private Map<String, List<Long>> values = new HashMap<>();
|
private Map<String, List<Long>> values = new HashMap<>();
|
||||||
|
private Map<Long, Spanned> bodies = new HashMap<>();
|
||||||
|
|
||||||
private BoundaryCallbackMessages searchCallback = null;
|
private BoundaryCallbackMessages searchCallback = null;
|
||||||
|
|
||||||
|
@ -319,6 +321,19 @@ public class FragmentMessages extends FragmentEx {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBody(long id, Spanned body) {
|
||||||
|
if (body == null)
|
||||||
|
bodies.remove(id);
|
||||||
|
else
|
||||||
|
bodies.put(id, body);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Spanned getBody(long id) {
|
||||||
|
return bodies.get(id);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void move(long id, String name, boolean type) {
|
public void move(long id, String name, boolean type) {
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
|
|
Loading…
Reference in New Issue