mirror of
https://github.com/M66B/FairEmail.git
synced 2025-12-30 17:40:34 +01:00
Fixed changing view model type
This commit is contained in:
@@ -71,7 +71,6 @@ import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
import androidx.lifecycle.Lifecycle;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProviders;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
@@ -2620,78 +2619,82 @@ public class FragmentMessages extends FragmentBase {
|
||||
|
||||
ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class);
|
||||
|
||||
LiveData<PagedList<TupleMessageEx>> liveMessages = model.getPagedList(
|
||||
ViewModelMessages.Model vmodel = model.getModel(
|
||||
getContext(), getViewLifecycleOwner(),
|
||||
viewType, account, folder, thread, id, query, server,
|
||||
new BoundaryCallbackMessages.IBoundaryCallbackMessages() {
|
||||
@Override
|
||||
public void onLoading() {
|
||||
loading = true;
|
||||
pbWait.setVisibility(View.VISIBLE);
|
||||
}
|
||||
viewType, account, folder, thread, id, query, server);
|
||||
|
||||
@Override
|
||||
public void onLoaded(int fetched) {
|
||||
loading = false;
|
||||
pbWait.setVisibility(View.GONE);
|
||||
vmodel.setCallback(callback);
|
||||
vmodel.setObserver(getViewLifecycleOwner(), observer);
|
||||
}
|
||||
|
||||
Integer submitted = (Integer) rvMessage.getTag();
|
||||
if (submitted == null)
|
||||
submitted = 0;
|
||||
if (submitted + fetched == 0)
|
||||
tvNoEmail.setVisibility(View.VISIBLE);
|
||||
}
|
||||
private BoundaryCallbackMessages.IBoundaryCallbackMessages callback = new BoundaryCallbackMessages.IBoundaryCallbackMessages() {
|
||||
@Override
|
||||
public void onLoading() {
|
||||
loading = true;
|
||||
pbWait.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable ex) {
|
||||
if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED))
|
||||
if (ex instanceof IllegalArgumentException)
|
||||
Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show();
|
||||
else
|
||||
new DialogBuilderLifecycle(getContext(), getViewLifecycleOwner())
|
||||
.setMessage(Helper.formatThrowable(ex))
|
||||
.setPositiveButton(android.R.string.cancel, null)
|
||||
.create()
|
||||
.show();
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void onLoaded(int fetched) {
|
||||
loading = false;
|
||||
pbWait.setVisibility(View.GONE);
|
||||
|
||||
liveMessages.observe(getViewLifecycleOwner(), new Observer<PagedList<TupleMessageEx>>() {
|
||||
@Override
|
||||
public void onChanged(@Nullable PagedList<TupleMessageEx> messages) {
|
||||
if (messages == null)
|
||||
Integer submitted = (Integer) rvMessage.getTag();
|
||||
if (submitted == null)
|
||||
submitted = 0;
|
||||
if (submitted + fetched == 0)
|
||||
tvNoEmail.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable ex) {
|
||||
if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED))
|
||||
if (ex instanceof IllegalArgumentException)
|
||||
Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show();
|
||||
else
|
||||
new DialogBuilderLifecycle(getContext(), getViewLifecycleOwner())
|
||||
.setMessage(Helper.formatThrowable(ex))
|
||||
.setPositiveButton(android.R.string.cancel, null)
|
||||
.create()
|
||||
.show();
|
||||
}
|
||||
};
|
||||
|
||||
private Observer<PagedList<TupleMessageEx>> observer = new Observer<PagedList<TupleMessageEx>>() {
|
||||
@Override
|
||||
public void onChanged(@Nullable PagedList<TupleMessageEx> messages) {
|
||||
if (messages == null)
|
||||
return;
|
||||
|
||||
if (viewType == AdapterMessage.ViewType.THREAD)
|
||||
if (handleThreadActions(messages))
|
||||
return;
|
||||
|
||||
if (viewType == AdapterMessage.ViewType.THREAD)
|
||||
if (handleThreadActions(messages))
|
||||
return;
|
||||
Log.i("Submit messages=" + messages.size());
|
||||
adapter.submitList(messages);
|
||||
|
||||
Log.i("Submit messages=" + messages.size());
|
||||
adapter.submitList(messages);
|
||||
|
||||
// This is to workaround not drawing when the search is expanded
|
||||
new Handler().post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
rvMessage.requestLayout();
|
||||
}
|
||||
});
|
||||
|
||||
rvMessage.setTag(messages.size());
|
||||
|
||||
boolean hasBoundary = (viewType == AdapterMessage.ViewType.FOLDER || viewType == AdapterMessage.ViewType.SEARCH);
|
||||
|
||||
if (!hasBoundary || !loading)
|
||||
pbWait.setVisibility(View.GONE);
|
||||
if (!hasBoundary && messages.size() == 0)
|
||||
tvNoEmail.setVisibility(View.VISIBLE);
|
||||
if (messages.size() > 0) {
|
||||
tvNoEmail.setVisibility(View.GONE);
|
||||
grpReady.setVisibility(View.VISIBLE);
|
||||
// This is to workaround not drawing when the search is expanded
|
||||
new Handler().post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
rvMessage.requestLayout();
|
||||
}
|
||||
});
|
||||
|
||||
rvMessage.setTag(messages.size());
|
||||
|
||||
boolean hasBoundary = (viewType == AdapterMessage.ViewType.FOLDER || viewType == AdapterMessage.ViewType.SEARCH);
|
||||
|
||||
if (!hasBoundary || !loading)
|
||||
pbWait.setVisibility(View.GONE);
|
||||
if (!hasBoundary && messages.size() == 0)
|
||||
tvNoEmail.setVisibility(View.VISIBLE);
|
||||
if (messages.size() > 0) {
|
||||
tvNoEmail.setVisibility(View.GONE);
|
||||
grpReady.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private boolean handleThreadActions(@NonNull PagedList<TupleMessageEx> messages) {
|
||||
// Auto close / next
|
||||
|
||||
Reference in New Issue
Block a user